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