2014-03-03 101 views
1

我有ListView与复选框的应用程序删除选中的项目;;并应DELET有与检查项目相同的ID TEH项目: 这里是我的代码多选列表查看包含复选框

private class CAdapter extends BaseAdapter { 
     private LayoutInflater mInflater; 
     private ArrayList<Entity> list; 
     private Context context; 
     String Status; 
     CAdapter(Context context, 
       ArrayList<Entity> getC) { 
      this.context = context; 
      this.list = getC; 
      Status=""; 
      mInflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

     class ViewHolder { 
      TextView Name; 
      TextView Desc; 

      Button deleteBtn; 

      CheckBox CBox; 
     } 

     public int getCount() { 
      return list.size(); 
     } 

     public Object getItem(int position) { 
      return list.get(position); 
     } 

     public long getItemId(int position) { 
      return position; 
     } 




     @SuppressLint("NewApi") 
     public View getView(final int position, View convertView, ViewGroup parent) { 

      final ViewHolder holder; 
      final CEntity CObj = list.get(position); 

      if (convertView == null) { 
       convertView = mInflater.inflate(
         R.layout.custom_list_view_confirmed, parent, 
         false); 
       holder = new ViewHolder(); 


       holder.Name = (TextView) convertView 
         .findViewById(R.id.Name); 



       holder.Desc = (TextView) convertView 
         .findViewById(R.id.activity1); 





       holder.deleteBtn = (Button) convertView 
         .findViewById(R.id.deleteBtn); 

       holder.CBox=(CheckBox) convertView.findViewById(R.id.isCheck); 

       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 








      if (CObj.getMystatus().equals(
        context.getResources().getString(R.string.course_status_delete))) { 
       holder.status.setTextColor(Color.RED); 
      } else if (attemptedCourseObj.getMystatus().equals(
        context.getResources().getString(R.string.course_status_pending))) { 
       holder.status.setTextColor(Color.GREEN); 
      } else if (attemptedCourseObj.getMystatus().equals(
        context.getResources().getString(R.string.course_status_update))) { 
       holder.status.setTextColor(Color.BLUE); 
      } 

      holder.Name.setText(attemptedCourseObj.getCourseName()); 







      holder.CBox.setOnClickListener(new OnClickListener(){ 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        if(holder.CBox.isChecked()){ 
         if(list.contains(getItem(position))){ 
          list.remove(getItem(position)); 
          } 
        } 
       } 

      }); 
//   

      return convertView; 
     } 
    } 

时删除检查它dosent删除具有相同ID的项目的问题。

int pos=Data.CList.size(); 
      SparseBooleanArray checked=CListView.getCheckedItemPositions(); 
      for (int n = pos; n > 0; n--){ 
       if (checked.get(n)){ 
       code=Data.inList.get(n).getCCode(); 
       Data.inList.remove(n); 

       }else if(CList.get(n).equal(code){ 
Data.inList.remove(n); 
} 

回答

0

尝试刷新列表以notifydatasetchanged,并确保您从列表

0

你需要通过删除后给予adapter新的数据集,告知您的adapter新修改删除整个对象从中删除元素并通知更改。你可以做到这一点,如下所示: 1)添加方法到您的adapter,设置新的数据如下:

public void setNewData(ArrayList<Entity> newEntities){ 
    this.list = newEntities; 
} 

2)从activityfragment呼叫前面的方法与新的数据,并调用此行通知adapter与变化

myAdapter.setNewData(myNewEntities); 
myAdapter.notifyDataSetChanges(); 

阅读本answer更多信息有关NotifyDataSetChanges()方法

相关问题