2016-07-11 3 views
0

リストビューを更新するコードが更新されていません。リストビューとDBから選択したアイテムを削除しようとしましたが、私のコードでは選択したアイテムではなく前のアイテムが削除されます

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

    cd.open(); 


    cd.deleteRow(id+1); 
    strings.remove(position); 
    lv_arr = (String[]) strings.toArray(new String[strings.size()]); 
    arrayAdapter.notifyDataSetChanged(); 


    return false; 
} 
+0

試してみてください。cd.deleteRow(position); OnItemLongClick()メソッド –

+0

で、同じIDを持つテーブルにエントリを格納していますか?私はないと思います – SripadRaj

+0

cd.deleteRow(position); – Ishwinder

答えて

1

あなたはIDまたはリストビューから選択した項目の位置を通過している、だから、リストビュー項目が0の位置で初期化されていることを知っている必要があり、あなたが、ID 1とストアのアイテムを持っているし、その後でそれを増やすことも可能1.

だから、このような状況では、IDを1ずつ増やして削除するか、選択したアイテムに対して1つのオブジェクトを作成してから削除してください。

下記の最初の簡単な状況を確認してください。

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

    Log.v("long clicked", "pos: " + position); 

     cd.open(); 
     //long i=id; 
     //  i--; 

     cd.deleteRow(id + 1); 



     strings.remove(position) 
     lv_arr = (String[]) strings.toArray(new String[strings.size()]); 
     arrayAdapter.notifyDataSetChanged(); 



     // CView.setVisibility(ListView.VISIBLE); 
     // Intent intent=new Intent(SqlView.this,SqlView.class); 
     // startActivity(intent); 
     // ret(); 

     Toast.makeText(getApplicationContext(),"You have deleted a workout!", Toast.LENGTH_LONG).show(); 
     return false; 
    } 
+0

それは動作しますが、リストビューをリフレッシュする方法を教えてもらえますか? – Ishwinder

+0

はい、確実にarrayapdaterをグローバルに宣言してから値を代入する必要があります。アイテムを削除するときにクリックするとデータが変更されたので通知します – Vickyexpert

+0

私はこれに変更しますが、まだプライベートなArrayAdapterアダプタは使用できません。 cd.deleteRow(id + 1); adapter.notifyDataSetChanged(); – Ishwinder

関連する問題