2011-12-19 10 views
0

私はSQLテーブルから作成されたリストビューを持っています。それは、行を削除しようとしたり、新しい行を挿入しようとすると、すべてのエントリを複製するという事実を除いて、うまく動作します。 1行を挿入または削除した後、それは行を追加または削除した後にリストを複製する

項目1

項目2

なる項目1

項目2

ように見える変更する前に

アイテム1

リストが変更されるたびにfillDataを使用してアダプタを設定しています。

fillData()の最初の呼び出しではうまくいくようですが、既存の呼び出しのリスト全体をreaddで呼び出すだけです。それが働いた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; 
    } 

答えて

0

)は、次のようにします。..

data.clear(); 
+0

、ありがとう:

ここではいくつかのコードがあります – user1106201

関連する問題