【发布时间】:2015-06-09 16:16:16
【问题描述】:
我尝试从自定义适配器中删除该项目并通知数据已更改。但这似乎行不通。
mListDataAdapter.remove(mListDataAdapter.getItem(position));
mListDataAdapter.notifyDataSetChanged();
两者都不起作用mListDataAdapter.clear(); 在调试模式下适配器没有变化。
如果有帮助,我的活动会扩展 AppCompatActivity。我在onActionItemClicked 中调用此代码。同时我从数据库中调用删除,这是正确的。
更新。 这是 ListDataAdapter:
public class ListDataAdapter extends ArrayAdapter {
List list = new ArrayList();
public ListDataAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler{
TextView id_;
TextView title;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutHandler layoutHandler;
if(row == null){
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.todo_row_layout,parent,false);
layoutHandler = new LayoutHandler();
layoutHandler.id_ = (TextView) row.findViewById(R.id.id_);
layoutHandler.title = (TextView) row.findViewById(R.id.todoTitle);
row.setTag(layoutHandler);
} else {
layoutHandler = (LayoutHandler) row.getTag();
}
DataProvider dataProvider = (DataProvider) this.getItem(position);
layoutHandler.title.setText(dataProvider.getTitle());
layoutHandler.id_.setText(String.valueOf(dataProvider.getId_()));
return row;
// return super.getView(position, convertView, parent);
}
}
【问题讨论】:
-
请使用您的 CustomAdapter 更新您的问题或删除方法源以更好地帮助您。
-
请上传完整代码和logcat。这部分看起来不错。
-
已更新适配器代码。