0

助けてください、この(おそらく単純な)質問は私を夢中にさせます。

テキストビューとチェックボックスを含むカスタムリストビューがあります。チェックボックスがチェックされているときに、リストビュー要素に対してアクションを実行したい。以下のコードを使用しようとしていますが、クリックされた特定のチェックボックスを検出する方法がわかりません。

checkBox = (CheckBox) findViewById(R.id.textCheckbox);
checkBox.setOnCheckedChangeListener(this);

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isChecked)
        make some action
    else
        make another action
}

また、OnItemLongClickListener でチェックボックスを反応させようとしました。

OnItemLongClickListener LongListener = new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) {
        CheckBox checkBox = (CheckBox) v.findViewById(R.id.textCheckbox);
        listView = (ListView) a;
        checkBox.setChecked(true);
        return true;
    }
};

このようにして、リストビュー項目をロングクリックしたときに適切なチェックボックスをチェックできますが、リストを下にスクロールするとすぐにチェックボックスがその位置から移動します。

ご意見をお聞かせください!

4

1 に答える 1

0

最良の方法は、基になるデータを更新して呼び出すことですnotifyDatasetChanged()

OnItemLongClickListener LongListener = new OnItemLongClickListener() {
@Override
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) {
        someListWithYourData.get(position).setSomething(true); // Now your data reflects the change
        yourAdapter.notifyDataSetChanged();
        return true;
    }
};
于 2013-02-25T20:18:52.367 に答える