リストビューでユーザーがチェックする項目を選択したい。私はCHOICE_MODE_MULTIPLEにlistviewを設定して、それは私に複数の選択を行うことができるリストを示しています。しかし、どのようにチェック項目を取得するには?私は使用しようとしました: SparseBooleanArray sp = lv.getCheckedItemPositions(); チェックされた項目を格納するのはうまくいきますが、チェックされている項目がチェックされていない場合は配列を更新しません。これは、チェックされていない項目がチェックされた前のデータを表示します。 これを行う方法はありますか? は、ここに私のコードです:複数の項目から項目を選択するListView - android
final ListView lv = new ListView(getApplicationContext());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice,arrayList);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?>
myAdapter, View myView, int myItemInt, long mylng){
SparseBooleanArray sp= lv.getCheckedItemPositions();
String str="";
for(int i=0;i<sp.size();i++)
{
str+=arrayList.get(sp.keyAt(i))+",";
}
Toast.makeText(getApplicationContext(),
"You selected: "+str,
Toast.LENGTH_LONG).show();
}
});
私もチェックされた項目を覚えておきたいとリストが開かれたときにチェックとしてそれを示しています。
IMO if(sp.valueAt(i))processCheckedItem(sp.keyAt(i)); – Deucalion
どのクラスがprocessCheckedItem()に属していますか?私はそれをちょうどと呼ぶことができません。オブジェクトを介して呼び出す必要があります。 –
processCheckedItemはカスタム関数の例です。あなたは何でもすることができます。この場合、 "keyAt"はチェックされた項目位置を返す(un) "valueAt"は "keyAt"の項目がチェックされているかどうかを返します。 – Deucalion