3
我發現只有一個類似的問題,它並沒有幫助我。我希望你能幫助我,因爲我被卡住了。刷新從我的適配器ExpandableListView
這是我的自定義適配器(僅相關部分):
MyExpandableListAdapter
:
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
//...
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View view, ViewGroup parent) {
ChildInfo childInfo = (ChildInfo) getChild(groupPosition, childPosition);
if (view == null) {
LayoutInflater infalInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = infalInflater.inflate(R.layout.prisustva_detaljno_child_row,
null);
}
Button delete = (Button) view.findViewById(R.id.delete);
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
RelativeLayout Rl = (RelativeLayout) v.getParent();
TextView id = (TextView) Rl.findViewById(R.id.id_prisustvo);
PrisustvaAdapter deleteByID = new PrisustvaAdapter(context);
deleteByID.openToWrite();
deleteByID.openToRead();
deleteByID.deleteID(id .getText().toString());
deleteByID.close();
Toast.makeText(context, "Successfully deleted!",
Toast.LENGTH_LONG).show();
}
});
// ...
return view;
}
// ...
}
就像你可以看到我我ExpandableListView
的每個子行中有一個按鈕。當我點擊那個按鈕時,它會觸發我的數據庫中的刪除過程,因爲您還可以看到我必須從適配器內刪除,因爲只有那裏我可以爲子行內的按鈕創建點擊事件。我想知道當我從數據庫中刪除數據時,如何刷新我的ExpandableListView
?我必須從適配器內部完成嗎?如果不是,還有什麼替代方案?
P.S:如果你們需要更多的代碼,請讓我知道。
我試過了,但沒有奏效。在我刪除子行後,不應該調用notifyDatasetChanged()'。因爲我只是從我的數據庫中刪除它,而不是從列表中刪除它。當我使用ListView時,我有這個方法'adapter.remove()'和'adapter.add()',之後我調用了'notifyDatasetChanged()',它像一個魅力一樣工作,但我無法弄清楚ExpandableListView。 – Aksiom 2013-03-12 01:14:49
如果您的適配器基於列表(而不是基於數據庫),則必須將其從列表中刪除,然後調用notifyDataSetChanged()。 – znat 2013-03-12 01:21:33
我在找到如何從列表中刪除特定項目後進行管理。這是我唯一的問題,而且非常簡單。謝謝你的提示,幫了我很多。 P.S.我有一個與LinkedHashMap鏈接的ArrayList的ArrayList。起初不知道如何從那裏獲取特定物品。但最後它很簡單。 – Aksiom 2013-03-12 01:33:03