我有点问题。我有课
private static class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public EfficientAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
// return size of elements
public int getCount() {
return BridgeJSON.listFromJSON.getItem().size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
position_move = 0;
convertView = mInflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.txt_description = (TextView) convertView
.findViewById(R.id.description_event);
......
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (listFromJSON.getItem().get(position).isViewed() == false) {
convertView.setBackgroundColor(Color.RED);
this.notifyDataSetChanged();
} else {
// get text for description
String txt_for_description = listFromJSON.getItem().get(
position - position_move).getDescr();
..........
}
return convertView;
}
static class ViewHolder {
TextView txt_description;
TextView txt_time;
TextView txt_title;
TextView txt_place;
}
}
当我这样做时,方法convertView.setBackgroundColor(Color.RED)
工作得很好,我需要什么
图像在那里:
dl.dropbox.com/u/866867/stack/device2.png
但是当我想删除该项目时,我无法做到。我添加了convertView.setVisibility(View.GONE);
,但是除了隐藏它之外还有空项目。我读到参数View.INVISIBLE
不会隐藏布局,但View.GONE
会有,但在我的代码中,却没有((
答案 0 :(得分:0)
使用适配器时,如果要删除项目,通常使用mAdapter.remove(theObjectToRemove);
然后,您更新ListView:
mListView.notifyDataSetChanged();
但是,在您的情况下,您有一个没有此方法的BaseAdapter。那么你可以在你的数据集中使用ArrayAdapter而不是BaseAdapter吗?
或者您必须在删除要从阵列中删除的内容后重新创建baseAdapter。