2011-05-17 13 views
1

私は、アンドロイドを学ぶために食料雑貨品リストアプリを開発していますが、ListViewのアイテムを取得して、私が設定したItemClickListenerのonClickイベントをトリガーする方法がわかりません。リストビュー。メソッドrenderList()はonResume()メソッドから呼び出され、データベースから食料品のリストを取得し、ListViewを埋め込みます。なぜこの実装は機能しません。 list_itemをクリックしてもトーストは表示されませんか?(Android)ListView onItemClicked not triggering

list_itemはCheckBoxビューです。

@Override 
protected void onResume() { 
    super.onResume(); 
    renderList(); 
} 

protected void renderList(){ 

    try { 
     dbHelper = new DbHelper(getApplicationContext()); 
     db = dbHelper.getReadableDatabase(); 
     cursor = db.query(DbHelper.TABLE, null, null, null, null, null, DbHelper.C_ID + " DESC"); 
     startManagingCursor(cursor); 
     adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, FROM, TO); 

     groceriesList = (ListView)findViewById(R.id.listView1); 
     groceriesList.setAdapter(adapter); 
     groceriesList.setOnItemClickListener(clickListen); 


    } catch (Exception e) { 
     Log.d(TAG, "RenderList Error: ",e); 
    } 
} 

private OnItemClickListener clickListen = new OnItemClickListener(){ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getApplicationContext(), "pos: "+position, Toast.LENGTH_SHORT).show(); 
    } 

}; 

答えて

3

私の推測では、リスト行にフォーカスを当てるアイテムがあると思います。 thisをfalseに設定するか、項目のバインドを調べるには、xml属性をandroidに設定します:focusable = "false"

+0

技術的には私はあなたが正しいと思っています。私はそれを動作させるためにtextViewに切り替える必要がありました。私はtextViewとチェックされていないチェックボックスの画像でlinearLayoutを作った。クリックされるとチェックされたチェックボックスに画像が変わるだけだった。 – Atomix

+0

を使用するとどうなりますか? – runor49

+0

カスタムCursorAdapterクラスを使用してリストビューを作成しました – Atomix

1

おそらくListActivityを使用して、onListItemClickメソッドをオーバーライドします。もう1つの問題はおそらくあなたがリストビューに入れているものです。概要については、ListView with clickable/editable widgetを参照してください。リストビューにフォーカス可能な項目がある場合は、クリックを正しく登録するのが難しくなります。

+0

リストアクティビティを使用する場合、スクロール中に上部のどの位置に追加してヘッダーを追加する必要がありますか? – Atomix

関連する問題