我有一個ExpandableListView
,它使用了非常原始的BaseExpandableListAdapter
實現。它需要一個ArrayList
和獲取數據,從該列表:ExpandableListView + BaseExpandableListAdapter:可以添加項目但無法清除列表
public class ListAdapter extends BaseExpandableListAdapter {
public ListAdapter (Context context, ArrayList<MyListItem> itemContainer) {
m_inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
m_items = itemContainer;
}
@Override
public int getGroupCount() {
return m_items.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
@Override
public Object getGroup(int groupPosition) {
return null;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return null;
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = m_inflater.inflate(R.layout.item_header, parent, false);
}
TextView label = (TextView) convertView.findViewById(R.id.itemHeader);
label.setText(String.valueOf(m_items.get(groupPosition).version) + " (" + m_items.get(groupPosition).date + ")");
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = m_inflater.inflate(R.layout.list_item, parent, false);
}
TextView label = (TextView) convertView.findViewById(R.id.item_description);
label.setText(m_items.get(groupPosition).description);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
LayoutInflater m_inflater = null;
ArrayList<MyListItem> m_items = null;
}
活動舉行的「原始」 ArrayList<MyListItem>
和操縱它。當一個項目被添加,它這樣做:
m_items.add(new ListItem(itemId, version, dateString, description));
m_listAdapter.notifyDataSetChanged();
而且工作。但清除列表並不是!
void clearList() {
m_items.clear();
m_listAdapter.notifyDataSetChanged();
}
我當然有檢查清除列表的代碼實際上是被調用的。所以有什麼問題?
什麼是你的錯誤? –
@AdrianOlar:正如我所說,沒有錯誤。調用'm_items.clear()'+'m_listAdapter.notifyDataSetChanged()'後,該列表不會變爲空。 –
從你打電話的地方* m_items.clear(); *?在適配器內部? – Rami