ArrayAdapter から ListView を作成します。ListView の各行には、ImageView と TextView があります。setOnItemClickListener を使用してクリックされたイベントを処理するようになりました
lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
CategoryInfo cat = (CategoryInfo) lv
.getItemAtPosition(position);
showGameByCategory(Long.valueOf(cat.getId()), cat.getName());
}
});
行をクリックすると、別のアクティビティが開始されます。そのアクティビティには、ListView に戻るボタンがあります。そのボタンをクリックすると、 が呼び出されますActivity.finish();
。
ここに問題があります。初めて ListView を開いて項目をクリックすると、正常に動作し、新しいアクティビティが開きます。しかし、ボタンをクリックしてListViewに戻ると、アイテムをクリックできません。私のアプリには多くのタブがあります。別のタブに切り替えて ListView に戻ると、ListView アイテムをもう一度クリックできます。しかし、ボタンをクリックすると、アイテムはクリックできなくなります。
2 つの異なる OS でテストし、Android 2.3 では正常に動作しますが、このエラーは Android 4.0 で発生しました。
これを修正する方法を知っている人はいますか?
編集:これは私のレイアウトファイルです:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@drawable/listitem_selector_odd"
android:padding="6dip" >
<RelativeLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical" >
<ImageView
android:id="@+id/avatar"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginRight="6dip"
android:layout_alignParentLeft="true"/>
<TextView
android:id="@+id/toptext"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_toRightOf="@+id/avatar"
android:layout_marginRight="6dip"
android:layout_weight="1"
android:gravity="center_vertical"
android:textColor="#000000"
android:textSize="18dp"
android:textStyle="bold" >
</TextView>
<ImageView
android:id="@+id/arrow"
android:layout_width="10dip"
android:layout_height="15dip"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginLeft="6dip"
android:layout_weight="1"
android:gravity="center_vertical"
android:src="@drawable/arrow_icon" />
</RelativeLayout>
</LinearLayout>