1

リストビュー(およびデータベース)からアイテムを削除する際に問題があります。これまでのところ、私はこの例に従っています: http://www.vogella.com/articles/AndroidSQLite/article.htmlしかし、そこの削除は好きではありません (常に最初のものを削除するボタン)。

これが私の活動クラスです:

public class FirstActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_1);

    final ShoppingSQL shoppingSQL = new ShoppingSQL(this);
    List<ShoppingData> list = shoppingSQL.getAll();

    ArrayAdapter<ShoppingData> adapter = new ArrayAdapter<ShoppingData>(
            this, android.R.layout.simple_list_item_1, list);
    setListAdapter(adapter);

    this.getListView().setLongClickable(true);
       this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
                Log.w("DELETED", " DELETED");
                shoppingSQL.delete((int)id);
                return true;
            }
        });     

}

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    Log.w("CLICKED", "CLICKED");
}

}

ご覧のとおり、長いクリックのリスナーと、ID を必要とする削除メソッドが設定されています。問題は ID にあり、現在それを与えているのは注文番号 (0、1、2、3) のようです - db の実際の ID ではありません。それで、私の質問はどうすれば本当のIDを取得できますか?

4

2 に答える 2

2

ショッピングIDのデータを取得できます

this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
                Log.w("DELETED", " DELETED");

                //here You can get your id by 

                list.get(position).getID();

                //getID id the getter method of shoppingdata ,here you can declare your method for ID as whatever you have in shopping data
                shoppingSQL.delete((int)list.get(position).getID());
                return true;
            }
        });    

アイテムを削除する場合

adapetr.remove(list.get(i)); 次に、listview で notifydatasetchanged を呼び出します

于 2013-01-21T06:18:25.597 に答える
1

次のように、ListView から選択されている項目を取得し、List からその ID を確認できます。

    String selectedItem =(String) (MyListView.getItemAtPosition(position));
    int ItemID = list.indexOf(selectedItem);
    shoppingSQL.delete(ItemID);
于 2013-01-21T06:18:18.313 に答える