0
我有一个从SQL表填充的列表视图。它工作正常,除了它重复所有entrys,当我尝试删除一行或插入一个新的事实。添加或删除行后复制列表
所以之前它看起来任何更改,如
项目1
项目2
插入或删除1行变得
项目1
项目2
后item 1
项目2
我使用fillData来设置适配器,每当列表更改时。
它似乎对fillData()的第一个调用正常工作,但成功的调用只读取了存在的一个整个列表。
下面是一些代码:
private void fillData() {
int a=0;
todo = dbHelper.fetchAllTodos();
startManagingCursor(todo);
todo.moveToFirst();
while (!todo.isAfterLast()) {
String title=todo.getString(todo.getColumnIndexOrThrow(DbTodoAdapter.KEY_SUMMARY));
String detail=todo.getString(todo.getColumnIndexOrThrow(DbTodoAdapter.KEY_DESCRIPTION));
String priority=todo.getString(todo.getColumnIndexOrThrow(DbTodoAdapter.KEY_CATEGORY));
String alarm=todo.getString(todo.getColumnIndexOrThrow(DbTodoAdapter.KEY_ALARM));
if(alarm!=null) a=1; else a=0;
if(priority.contains("Urgent"))
rd = new RowData(0, title, detail,a,alarm);
if(priority.contains("Medium"))
rd = new RowData(1, title, detail,a,alarm);
if(priority.contains("Low"))
rd = new RowData(2, title, detail,a,alarm);
data.add(rd);
todo.moveToNext();
}
CustomAdapter adapter = new CustomAdapter(this, R.layout.todo_list_row, R.id.title, data);
setListAdapter(adapter);
getListView().setTextFilterEnabled(true);
//adapter.notifyDataSetChanged();
}
private class CustomAdapter extends ArrayAdapter<RowData> {
public CustomAdapter(Context context, int resource, int textViewResourceId, List<RowData> objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder=null;
TextView title = null;
TextView detail = null;
ImageView i11=null;
ImageView i12=null;
TextView alarm=null;
RowData rowData= getItem(position);
if(convertView == null){
convertView = mInflater.inflate(R.layout.todo_list_row, null);
holder = newViewHolder(convertView);
convertView.setTag(holder);
}else{
mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
holder = (ViewHolder) convertView.getTag();
}
title = holder.gettitle();
title.setText(rowData.mTitle);
detail = holder.getdetail();
detail.setText(rowData.mDetail);
i11=holder.getImage();
i11.setImageResource(imgid[rowData.mId]);
i12=holder.getImageAl();
i12.setImageResource(imgida[rowData.mIda]);
alarm = holder.getalarm();
alarm.setText(rowData.mAlarm);
return convertView;
}
它的工作,谢谢 – user1106201 2011-12-19 17:17:18