0

以下のように ListView 選択モードを設定しました。

 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

しかし、いくつかのアイテムを選択して選択したアイテムをトーストしようとすると、空の文字列が表示されます。

選択したアイテムを乾杯する方法:

 String selected = "";
    int cntChoice = listView.getCount();

    SparseBooleanArray sparseBooleanArray = listView.getCheckedItemPositions();
    for (int i = 0; i < cntChoice; i++) {
        if (sparseBooleanArray.get(i)) {
            selected +=listView.getItemAtPosition(i).toString() + "\n";
        }
    }
    Toast.makeText(getApplicationContext(),selected,Toast.LENGTH_SHORT).show();

アダプターの変換ビューのリスナーを設定しましたが、問題は

それを管理することは可能ですか?

コンバートビューリスナーで選択したアイテムを設定することは可能ですか?

4

2 に答える 2

0

問題は、ビューを変換するためのクリックリスナーがある場合、自動的に選択された項目が設定されないため、手動で行う必要があることです

Mapそのためには、選択したアイテムをその位置とともに保存する必要があります

private Map<Integer, String> selectedItems=new HashMap<Integer,String>;

したがって、アダプターでこれを行う必要があります。

 convertView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (!selectedItems.containsKey(position))
                    selectedItems.put(position, holder.text.getText().toString());
                else
                    selectedItems.remove(position);
            }
        });

そして、これを get item selected text と呼ぶことによって:

 public String getSelectedItems() {
    Iterator<Integer> iterator = selectedItems.keySet().iterator();
    String selected = "";
    while (iterator.hasNext()) {
        int position = iterator.next();
        selected += selectedItems.get(position) + "\n";
    }
    return selected;
}
于 2014-08-29T10:10:39.643 に答える
0

sparseBooleanArray選択したアイテムの位置のみを表示します。リストビューにバインドする配列またはカーソルからデータを取得する必要があります。たとえば、カーソルがある場合は、を使用する必要がありますcursor.moveToPosition( item )

このページを試してください:

http://www.yogeshblogspot.com/how-to-get-selected-items-from-multi-select-list-view/

于 2014-08-29T09:33:40.207 に答える