2012-03-09 14 views
0

次のコードを使用してデータベースからレコードを取得します。sqliteで取得した後にレコードを削除するにはどうすればいいですか?

for (LocWiseProfileBeans cn : LocWiseProfile) { 
     // get a reference for the TableLayout 
     TableLayout table = (TableLayout) findViewById(R.id.locprofile_table); 

     // create a new TableRow 
     TableRow row = new TableRow(this); 

     // count the counter up by one 
     counter++; 


     String log = "Loc Name: "+cn.getLocname()+" ,Lattitude: " + cn.getLattitude()+ " ,Longitude: " + cn.getLongitude()+ " , Selected Profile :"+cn.getSelectedprofile(); 
     TextView t = new TextView(this); 
     // set the text to "text xx" 
     t.setText(cn.getLocname()); 

     TextView t2 = new TextView(this); 
     t2.setText(cn.getSelectedprofile()); 
     row.addView(t); 
     row.addView(t2); 
     table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

しかし、私はこの記録をユーザーの要求に応じて有効にする必要があります。
ユーザーが2番目のレコードをクリックすると、このレコードは削除されます。
私は答えを見つけようとしましたが、適切な答えを見つけられません.......
私に参照コードまたは記事を提供してください。
ありがとうございました!

+0

おそらくListViewを使用して結果を表示できますか? – Hanon

+0

レコードを有効にするにはどのビューを使用する必要がありますか?ありがとう –

+0

@raju:ユーザーがレコードをクリックした場合は削除する必要があります。 –

答えて

2

これは、あなたの行にonClickListenerを設定することで可能です。 クリックされた行を特定するには、その行に一意のタグを設定します。

row.setTag(counter); // use counter or index for tag, so you can get the data from LocWiseProfile later 
row.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     int tag = (Integer)view.getTag(); 
     LocWiseProfileBeans cn = LocWiseProfile.get(tag); 
     // Perform delete action here 
     // ... 
    } 
}); 

あなたは、単にリストとしてデシベルから結果を表示したい場合は、私は、アダプタを使用して、あなたがより簡単な方法であなたのデータを表示し、管理することができ、あなたがListActivityまたはリストビューを使用してお勧めします。

+0

このタグ値を特定の行に設定する方法。私はあなたのロジックを使用しますが、それは選択されていない行だけを削除します。もう一度私に恩返しを与えてください...ありがとう –

+1

すべての行にタグを設定します。通常は行インデックスをタグとして使用します。後でgetタグを使用する場合は、タグの値が行インデックスになります。したがって、このインデックスを使用して削除コンテンツを処理できます。ただし、データリストが変更されているため、行を削除した後にタグを更新する必要があります。 ListView/ListActivityを使用する場合、この変更を管理するのにアダプタが役立ちます。 – Hanon

+0

row.setTag(カウンタ);タグに//使用カウンタまたはインデックス、あなたはLocWiseProfileからデータを得ることができるので、後で row.setOnClickListener(新View.OnClickListener(){ \t \t \t \t \t \t \t \t @Override \t \t \t \tます。public void onClickの(ビューV) \t \t \t \t { \t \t \t \t \t試し{ \t \t \t \t \t int tag =(Integer)v.getTag(); \t \t \t \t \t LocWiseProfileBeans cn = LocWiseProfile.get(tag); \t \t \t(タグ== cn.getId())\t \t \t \t { \t \t \t \t \t \t m.delete(CN場合。getId()); \t \t \t \t \t \t deleteMessage(); \t \t \t} \t \t \t \t \t}キャッチ(例外e){} \t \t \t \t \tがこの権利は何ですか? –

1
//decleration 
EventDataSQLHelper eventsData; //Class where table is created 
SQLiteDatabase dbx,rdbx; 

//onCreate 
eventsData = new EventDataSQLHelper(this); 
rdbx= eventsData.getReadableDatabase(); 
     dbx=eventsData.getWritableDatabase(); 
btn1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
//specify the id of the record to be deleted 
      dbx.delete("tablename", "id=" ?, null); 
      } 
     }); 
関連する問題