2017-08-11 35 views
1

ListViewで選択したアイテムを削除する方法ListViewのアイテムはSQLite.netのデータベースです 以下は自分のコードですが、すべての行を削除してdbに新しいアイテムを追加すると、私はあなたが、たとえばアダプタのコードで取り除きアイテム機能を追加することができ、リストビューListView android xamarinで選択したアイテムを削除する方法

private void popmenu(object sender, AdapterView.ItemClickEventArgs e) 
    { 
     var menu = new PopupMenu(this, listnames.GetChildAt(e.Position)); 
     menu.Inflate(Resource.Layout.popup_menu); 
     menu.MenuItemClick += (s, A) => 
     { 
      switch (A.Item.ItemId) 
      { 
       case Resource.Id.pop_button1: 
        // update stuff 
        string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3"); 
        db = new SQLiteConnection(dpPath); 
        var data = db.Table<LoginTable>(); 
        // Toast.MakeText(this, "row:" + (e.Position+1), ToastLength.Short).Show(); 
        int ww =(e.Position + 1); 
        var data1 = data.Where(x => x.id == ww); 
        foreach (var item in data1) 
        { 
         db.Delete(item); 

         Toast.MakeText(this, "Delete Successfully", ToastLength.Short).Show(); 
        } 

         break; 

      } 
     }; 

答えて

0

から行を削除することはできません。

public class MainAdapter : BaseAdapter<string> 
{ 

    private List<string> items = new List<string>(); 
    private Activity context; 

    public MainAdapter(Activity context, List<string> items) : base() 
    { 
     this.context = context; 
     this.items = items; 
    } 

    ... 

    public void RemoveItemAt(int position) 
    { 
     items.RemoveAt(position); 
    } 

} 

次にアイテムをクリックしてイベントに:

private void MListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e) 
{ 
    adapter.RemoveItemAt(e.Position); 
    adapter.NotifyDataSetChanged(); 
} 

enter image description here

+0

データベースからの削除方法は? – hamid

+0

@hamidの場合、あなたの行IDがあなたのリスト項目の順番と同じであれば、 'e.position'をidとして使用してdbから項目を削除することができます。 Xamarin AndroidでC#を使用したSQLite DB](http://slackshotindustries.blogspot.sg/2013/06/deleting-from-db-using-sqlite-in-android.html)。 –

関連する問題