2014-11-24 57 views
0
if (v.getId() == R.id.contact_btnNext) { 

     StringBuilder id = new StringBuilder(); 
     String prefix = ""; 

     for (Datamodel datamodel : mAdapter.arrSelectedModel) { 


      id.append(prefix).append(datamodel.getId()); 

      prefix = ","; 
     } 

使用此代碼我得到的所有ListView這是其被選中,在ID未選中的值:如何獲得只有我在android中檢查過的id?

public class AdapterContactAddfriend extends BaseAdapter { 

    private Context context; 
    private ArrayList<Datamodel> arrModel; 
    public ArrayList<Datamodel> arrSelectedModel; 
    public ArrayList<Boolean> arrCheckboxState; 
    ViewHolder holder; 

    ImageLoader imageloader; 

    public AdapterContactAddfriend(Context context, 
      ArrayList<Datamodel> arrModel) { 
     this.context = context; 
     this.arrModel = arrModel; 
     arrCheckboxState = new ArrayList<Boolean>(); 
     arrSelectedModel = new ArrayList<Datamodel>(); 
     imageloader = new ImageLoader(context); 

     for (int i = 0; i < arrModel.size(); i++) { 
      arrCheckboxState.add(false); 
     } 

    } 

    @Override 
    public int getCount() { 
     return arrModel.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return arrModel.get(position); 
    } 

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

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      holder = new ViewHolder(); 
      LayoutInflater mInflater = (LayoutInflater) context 
        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      convertView = mInflater 
        .inflate(R.layout.row_contactaddfriend, null); 
      holder.checkBox = (CheckBox) convertView 
        .findViewById(R.id.rowcontact_checkbox); 

      convertView.setTag(holder); 
     } else 
      holder = (ViewHolder) convertView.getTag(); 
     holder.txtContactName.setText(arrModel.get(position).contactName); 

     holder.checkBox 
       .setOnCheckedChangeListener(new OnCheckedChangeListener() { 

        @Override 
        public void onCheckedChanged(CompoundButton buttonView, 
          boolean isChecked) { 
         int position = (Integer) buttonView.getTag(); 
         if (isChecked) { 
          arrCheckboxState.set(position, true); 
          arrModel.get(position).setChecked(true); 
          arrSelectedModel.add(arrModel.get(position)); 
         } else { 
          arrModel.get(position).setChecked(false); 
          arrCheckboxState.set(position, false); 
          arrSelectedModel.remove(arrModel.get(position)); 
         } 
        } 
       }); 

     return convertView; 
    } 

} 

這是我的適配器和我已booleanpublic ArrayList<Boolean> arrCheckboxState進行檢查和未經檢查的價值,但我拿不到的地方正在做錯誤,請告訴我,因爲我得到的所有列表視圖項的ID的值,檢查id價值,但我得僅選擇那些ID。

回答

0

刪除此line..because你不設置位置tag..as位置已經存在於你爲什麼從標籤得到它的參數?

int position = (Integer) buttonView.getTag(); 

使用方法如下

holder.checkBox 
      .setOnCheckedChangeListener(new OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, 
         boolean isChecked) { 
        if(position<arrCheckboxState.size()){ 
        if (isChecked) { 
         arrCheckboxState.set(position, true); 
         arrModel.get(position).setChecked(true); 
         arrSelectedModel.add(arrModel.get(position)); 
        } else { 
         arrModel.get(position).setChecked(false); 
         arrCheckboxState.set(position, false); 
         arrSelectedModel.remove(arrModel.get(position)); 
        } 
        } 
       } 
      }); 
+0

是的,我檢查它等待PLZ – Edge 2014-11-24 05:39:40

+0

,但我沒有使用該代碼的位置@約翰 – Edge 2014-11-24 05:42:50

+0

什麼?..然後這是什麼代碼arrCheckboxState.set(位置,真); arrModel.get(position).setChecked(true); arrSelectedModel.add(arrModel.get(position)); – John 2014-11-24 05:43:52

相關問題