11

長いクリックでリスト ビューからアイテムを削除しようとしているときに問題が発生します。以下はコードです:

public class MListViewActivity extends ListActivity {

private ListView lv;
private String[] some_data = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    some_data = getResources().getStringArray(R.array.mdata);

    // Bind resources Array to ListAdapter
    ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this,
            R.layout.list_item, R.id.label, some_data);
    this.setListAdapter(myAdapter);

    lv = getListView();
    lv.setDividerHeight(3);

    lv.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                int arg2, long arg3) {

            // Can't manage to remove an item here

            return false;
        }
    });
}

どんな助けでも大歓迎です

4

4 に答える 4

15

を使用しないArraysでください。ArrayListアイテムを削除して に追加するために使用する必要がありますListview

配列サイズが宣言されると、特定のインデックスのデータを変更できますが、アイテムを削除したり追加したりすることはできません。

したがって、ArrayList を取得し、ListView アイテムを長押ししたときに、Arraylist の remove メソッドを呼び出して、データ セットが変更されたことを通知します。

例:

ArrayList<String> al = new ArrayList<String>();

longclick 内に以下のコードを記述してアイテムを削除します。

al.remove(arg2);//where arg2 is position of item you click
myAdapter.notifyDataSetChanged();
于 2013-01-15T15:07:49.733 に答える
12

試す

lv.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long arg3) {

              myAdapter.remove(some_data[position]);
              myAdapter.notifyDataSetChanged();

        return false;
    }

});
于 2013-01-15T15:10:08.390 に答える