2014-03-03 25 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()方法

相關問題