各行に 2 つのレイアウトが可能なリストビューがあります。
行ごとに onClick リスナーを実装するときは、クリックされた行の種類を特定してデータを取得できる最も効率的な方法を見つけようとしています。
これよりも効率的な方法はありますか?関数にアクセスしたかったのですが、次のgetItemViewType(position)
場所から正常にアクセスできませんでしたparent
:
// listening to single list item on click
myListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// selected item's TextView
// if the first view is null, it must be the other kind
TextView tView = null;
if(view.getId() == R.list.layout_a) tView = (TextView) view.findViewById(R.list.text_a);
else tView = (TextView) view.findViewById(R.list.text_b);
//DO STUFF AND LAUNCH ACTIVITY
}
});
レイアウト - これは非常に単純化された例ですが、クリックされた行がR.list.text_a
またはを使用しているかどうかを知る必要がありますR.list.text_b
。ルート LinearLayout にandroid:id=
属性を与えることはできますか?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+list/layout_a"
android:layout_width="fill_parent"
android:layout_height="100dip"
<TextView
android:id="@+list/text_a"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dip" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+list/layout_b"
android:layout_width="fill_parent"
android:layout_height="100dip"
<TextView
android:id="@+list/text_b"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dip" />
</LinearLayout>