2

以下は私のListActivity、onCreateコードです

public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            fakeTripBuilder();

            setContentView(R.layout.cutom_list_view);

            SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.custom_row_view, 
                    new String[] {"stop","distance","time","icon","mode"},
                    new int[] {R.id.text_stop,R.id.text_distance, R.id.text_time, R.id.icon, R.id.text_mode});

            populateList();
            setListAdapter(adapter);
}

同じクラス内で私は次のメソッドを持っています

 @Override
       protected void onListItemClick(ListView l, View v, int position, long id){
           super.onListItemClick(l, v, position, id);
           Log.d("Travel","You choosed!");
           Object o = this.getListAdapter().getItem(position);
           Toast.makeText(this, "You Choosed"+o.toString(), Toast.LENGTH_LONG).show();
       }

これが「custom_list_view.xml」です

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:clickable="false"
    android:gravity="center_horizontal|center_vertical"
    android:orientation="vertical" >
<ListView 
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000fff"
    android:layout_weight="2"
    android:drawSelectorOnTop="false">
</ListView>
<TextView 
    android:id="@id/android:empty"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFff00"
    android:text="No data"
/>
</LinearLayout>

問題は、onListItemClickメソッドがクリックしても呼び出されないことです。ヘルプ !!

4

4 に答える 4

6

ListActivity で ListView への参照を取得するには、次のように呼び出す必要があります。

ListView lv = getListView();

クリック リスナーを設定する必要はありません。既に設定されています。単純にオーバーライドします:

 @Override
 public void onListItemClick(ListView l, View v, int position, long id) {
     Object item = lv.getAdapter().getItem(position);

 }

また、xml ファイルでは、ListView に次の ID が必要です。

android:id="@android:id/list" 

編集

削除する必要があります

android:clickable="false"

レイアウトから子ビューをクリックできるようにする

于 2012-04-24T14:04:04.210 に答える
0

ListView lv = (ListView) findViewById(R.layout.cutom_list_view);

代わりに R.id.listview_id を使用する必要があります。これは R.layout.cutom_list_view で定義する必要があります

そのようです:

<ListView
  android:id="@+id/listview_id"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" >
</ListView>

編集:

R.layout.cutom_list_view はレイアウト ファイルの ID ですが、android:id="@+id/listview_id" のように定義された独自の ID で listview を見つける必要があるため、ID は R.id.listview_id になります。

于 2012-04-24T13:58:07.657 に答える
0

Try overriding the onListItemClick method if you want to catch click events on your list.

于 2012-04-24T13:58:17.120 に答える