The OnCheckChanged listener works only for the first checkbox in a customlistview

后端 未结 1 556
礼貌的吻别
礼貌的吻别 2020-12-22 09:08

The listener for checkbox in my custom listview works only for the first checkbox. I think this has something to do with the position in getView(). I\'m attaching my code wi

相关标签:
1条回答
  • 2020-12-22 10:10

    convertView is a temlate for every item and only at the first call null, you have to add the Listener for each item like this:

    public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    final ViewHolder holder;  
    LayoutInflater inflater =  context.getLayoutInflater();  
    if(convertView==null)  
    {  
        convertView = inflater.inflate(R.layout.custom_list, null);
        holder = new ViewHolder();  
        holder.txtViewTitle = (TextView) convertView.findViewById(R.id.title_text);  
        holder.txtViewDescription = (TextView)    
        convertView.findViewById(R.id.description_text);  
        holder.cb=(CheckBox) convertView.findViewById(R.id.cb);
        convertView.setTag(holder);  
    
    } else  {
        holder=(ViewHolder)convertView.getTag();  
     }  
    holder.cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
      String Channel=holder.txtViewTitle.getText().toString();
      @Override
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
         // TODO Auto-generated method stub
         if(position==0)
           {
            //works 
           }else if(position==1){ 
              //doesn't work
           }
       });
    holder.txtViewTitle.setText(title[position]);  
    holder.txtViewDescription.setText(description[position]);  
    holder.txtViewDescription.setFocusable(false);
    holder.txtViewTitle.setFocusable(false);
    return convertView;  
    } 
    
    0 讨论(0)
提交回复
热议问题