2012-03-09 2 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)); 

하지만 사용자 요청에 따라 삭제할 수 있도록이 레코드를 활성화해야합니다.
사용자가 두 번째 레코드를 클릭하면이 레코드가 삭제됩니다.
답변을 찾으려고했지만 적절한 답을 찾지 못했습니다 .......
참조 코드 또는 기사를 제공해주십시오.
미리 감사드립니다.

+0

아마도 ListView를 사용하여 결과를 표시 할 수 있습니까? – Hanon

+0

보기를 사용하여 레코드를 사용해야합니까? thanks –

+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 
     // ... 
    } 
}); 

당신은 단순히 목록으로 DB에서 결과를 표시하려면

, 나는 당신이 보여 더 간단한 방법으로 데이터를 관리 할 수있는 어댑터를 사용하여, ListActivity 또는 목록보기 사용하는 것이 좋습니다.

+0

이 태그 값을 특정 행에 설정하는 방법. 귀하의 논리를 사용하지만, 그것은 단지 상단 행을 선택 행을 삭제합니다. 다시 한 번 부탁 ... 감사합니다 –

+1

모든 행에 태그를 설정했습니다. 일반적으로 행 인덱스를 태그로 사용하므로 나중에 get 태그를 사용하면 태그의 값이 행 인덱스가됩니다. 따라서이 색인을 사용하여 삭제 내용을 처리 할 수 ​​있습니다. 그러나 한 가지는 데이터 목록이 변경되었으므로 행을 삭제 한 후에 태그를 업데이트해야한다는 것입니다. ListView/ListActivity를 사용하면 어댑터가이 변경 사항을 관리하는 데 도움이됩니다. – Hanon

+0

row.setTag (counter); 태그 // 사용 카운터 또는 인덱스, 당신은 LocWiseProfile 나중에 row.setOnClickListener (새 View.OnClickListener() {\t \t \t \t \t \t \t \t @Override \t \t \t \t 공공 무효의 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} 캐치 (예외 전자) {} \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); 
      } 
     }); 
관련 문제