1

私はlist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);でsimple_list_item_multiple_choiceを使用しています。データベースクエリから入力されたチェックボックスのリストを作成します。次に、onListItemClickを使用してリストのクリックを処理していますが、これも正常に機能しています。(5日後)どうしようもないのは、リスト項目に付いているチェックボックスがチェックされているかどうかに基づいてifステートメントを書くことです。必要なのは、以下の例と同等です。これは、android:onClick要素を使用して以下のメソッドを起動できるチェックボックスで完全に機能します。

public void onCheckboxClicked(View v) {
        // Perform action on clicks, depending on whether it's now checked
        if (((CheckBox) v).isChecked()) {
            Toast.makeText(this, "Selected", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "Not selected", Toast.LENGTH_SHORT).show();
        }
    }

これは私のアプリにとって重要なので、アドバイスをいただければ幸いです。以下は、simpleCusrorAdapterが使用しているものです。

 Cursor cursor3 = db.rawQuery("SELECT _id, symname FROM tblsymptoms WHERE _id IN ("+sympresult+") ", null);

        adapter = new SimpleCursorAdapter(
                this, 
                android.R.layout.simple_list_item_multiple_choice,
                cursor3, 
                new String[] {"symname","_id"}, 
                new int[] {android.R.id.text1});
        setListAdapter(adapter);
        ListView list=getListView();
        list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
4

2 に答える 2

3

この非常に便利なブログアイテムを見つけた後、私は問題を解決しました

onListItemClickを次のように変更しました。これは夢のように機能します。

public void onListItemClick(ListView parent, View view, int position, long id) {


      CheckedTextView check = (CheckedTextView)view;
      check.setChecked(!check.isChecked());
      boolean click = !check.isChecked();
      check.setChecked(click);
      if (click) {
            Toast.makeText(this, "Not Selected", Toast.LENGTH_SHORT).show();
      } else {
          Toast.makeText(this, "Selected", Toast.LENGTH_SHORT).show();
      } 
}
于 2012-03-17T19:15:28.603 に答える
0

私が正しく理解していれば、リストの各行にチェックボックスがあります。リスト内の項目が選択されたときに、対応するチェックボックスがチェックされているかどうかを確認できるようにしたいですか?

各リストアイテムのViewオブジェクトでsetTag(...)メソッドを使用してみてください。次に、onListItemClick()メソッドが呼び出されたときに、ビューでgetTag(...)を呼び出すことができます(チェックボックスが返されます)。カスタムアダプタを使用してリストにデータを入力していると仮定します。移入中に電話をかけたい:

   setTag( CHECKBOX_KEY, checkbox );

例えば:

protected void onListItemClick(ListView l, View v, int position, long id) {
    CheckBox cb = (CheckBox)v.getTag( CHECKBOX_KEY );

    boolean isChecked = false;

    if( null != cb ) {
        isChecked = cb.isChecked();
    }

    // .. do whatever you have to here...    

}

お役に立てれば...

于 2012-03-17T00:59:17.937 に答える