2011-04-25 94 views
0

我在我的應用程序中使用自定義列表視圖。在所有行的自定義列表視圖中,我放置了一個圖像按鈕。如果我點擊該圖像按鈕,我必須刪除自定義列表視圖中單擊的按鈕行。任何人都可以告訴我如何做到這一點?下面的代碼是不工作:自定義列表視圖在Android中刪除行

imgcross=(ImageView)v.findViewById(R.id.imgcross); 
imgcross.setId(position); 

if(v.getId()==R.id.imgcross) 
     { 
      Log.d("image id is",Integer.toString(imgcross.getId())); 
      myScheduleList.removeViewAt(imgcross.getId()); 
      Toast.makeText(MyScheduleDay0RequestedMeeting.this, "Cross Button is Clicked", Toast.LENGTH_LONG).show(); 

     } 






if (v.getId()==R.id.imgcross) 
{ //Integer index=(Integer)imgcross.getTag(); 
//Log.d("image id is",Integer.toString(index)); 
int index=imgcross.getId(); (imgcross.getId()); 
MyScheduleBean.listName.remove(index); 
MyScheduleBean.dateValue.remove(index); 
MyScheduleBean.dateValue.remove(index); 
CAdapter = new CustomAdapter(this,MyScheduleBean.listName,MyScheduleBean.dateValue,MyScheduleBe­an.meeting,R.layout.myschedule_day0_requestedmeetingrow,to); 
myScheduleList.setAdapter(CAdapter); 
} 

感謝

回答

0

您需要從底層Adapter刪除數據。正確完成後,這會自動更新ListView。否則,請致電notifyDataSetChanged()Adapter,這將導致ListView更新。

+0

你可以告訴你怎麼在點擊事件底層適配器刪除數據,即使我試圖與此 – mohan 2011-04-26 09:21:07

+0

如果(v.getId()== R.id.imgcross) \t \t { \t \t \t \t \t \t //整數指數=(整數)imgcross.getTag(); \t \t \t //Log.d("image id is「,Integer.toString(index)); \t \t \t int index = imgcross.getId(); \t \t \t \t \t \t(imgcross.getId()); \t \t MyScheduleBean.listName.remove(index); \t \t MyScheduleBean.dateValue.remove(index); \t \t MyScheduleBean.dateValue.remove(index); \t \t CAdapter = new CustomAdapter(this,MyScheduleBean.listName,MyScheduleBean.dateValue,MyScheduleBean.meeting,R.layout.myschedule_day0_requestedmeetingrow,to); \t \t \t myScheduleList.setAdapter(CAdapter); \t \t \t \t \t \t} – mohan 2011-04-26 09:22:33

+0

@mohan:我不知道任何代碼一樣。要從ArrayAdapter中移除數據,請調用'ArrayAdapter'上的remove()。要從「CursorAdapter」中刪除數據,請修改底層的數據源(例如數據庫)和'requery()''Cursor'。 – CommonsWare 2011-04-26 11:08:53

0

我一直在尋找這個答案太久 - 非常感謝你。 從數據庫中刪除記錄後:

adapter.remove(dbRecord); 

我在長按在ListView這樣做:

DBRecordOperation.deleteRecord(dbRecord); 

簡單地從ListView控件與刪除記錄。對於onContextItemSelected的完整代碼:

@Override 
public boolean onContextItemSelected(MenuItem item){ 

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
    DBRecord dbRecord = (DBRecord) getListAdapter().getItem(info.position); 
    int dbRecordId = dbRecord.getId(); 

    DBRecordOperation.deleteRecord(dbRecord); 
    adapter.remove(dbRecord); 


    return true; 

} 
相關問題