私の活動にはTextView
とListView
があります。 ListView
は、Visibility = gone
に設定されています。ユーザーがTextView
をクリックした場合のような機能が必要です。ListView
がバインドされ、 `Wrap_Content 'に表示されます。私はこれまでリストビューの高さをプログラムで設定する
マイXMLファイル
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtDate"
android:textSize="50dp"
android:background="@color/colorSplash"
android:text="20-11-2016"/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lstDesc"
android:visibility="gone" />
Javaコード
private void BindBookedList(){
final ArrayList<String> arr = new ArrayList<>();
arr.add("21-11-2016");
arr.add("22-11-2016");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_collapse, arr){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_collapse, null);
}
final TextView txtDate = (TextView) v.findViewById(R.id.txtDate);
final ListView lstDesc = (ListView) v.findViewById(R.id.lstDesc);
String strItemDAta = arr.get(position);
txtDate.setText(strItemDAta);
String[] arrContries = getResources().getStringArray(R.array.ListOfAirport);
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(getApplicationContext(), R.layout.spinner_item, arrContries);
lstDesc.setAdapter(adapter);
txtDate.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
com.kommlabs.pikmybox.MyUtlilites.ViewAnimationUtils.expand(lstDesc);
}
});
return v;
}
};
ListView listBooked = ((ListView) findViewById(R.id.lstBookedPackages));
listBooked.setAdapter(adapter);
}
ViewAnimationUtilsクラスコードを書く必要があり
public class ViewAnimationUtils {
static View view;
public static void expand(View v) {
view = v;
v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final int targtetHeight = v.getMeasuredHeight();
v.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
v.setVisibility(View.VISIBLE);
}
このコードでは、Expand
の機能をViewAnimationUtils
クラスと呼びます。 expand関数では、レイアウトの高さをWrap_Content
に設定していますが、リストビューレンダーの高さは1つの項目だけを表示するようになっています。 Listview
には8個のバインドアイテムがあります。
リストのすべてのアイテムを表示するには、高さをどのように設定するのですか?ListView
の高さを更新するには、この機能を試すことができます! –
cool。1年後でもうまくいきました。 :) –