2014-10-27 56 views
0

我正在实现一个Android应用程序,其中有一个列表视图。 这个列表视图的每个元素都有一个切换按钮,并且使用扩展了BaseAdapter的自定义适配器,我设法得到哪些切换按钮被选中,哪些不被选中。 但是,如果我想对这些切换按钮施加限制,该怎么办?假设当我检查第二个切换按钮时,我希望第一个切换按钮也被自动检查。 我该怎么办? 感谢Android列表视图:如何在列表项之间施加约束

 public class MyCustomAdapter<T> extends BaseAdapter { 
Context mContext; //the application context 
LayoutInflater mInflater; //object that is used to set the layout of the View 
ArrayList<T> mList; //list of the items shown in the user interface 
SparseBooleanArray mSparseBooleanArray; //object that is used to keep track of the selected items of the list 

ToggleButton[] toggleButtons; 

public MyCustomAdapter(Context context, ArrayList<T> list) { 

    this.mContext = context; 
    mInflater = LayoutInflater.from(mContext); 
    mSparseBooleanArray = new SparseBooleanArray(); 
    mList = new ArrayList<T>(); 
    this.mList = list; 
    toggleButtons = new ToggleButton[list.size()]; 
} 
public View getView (int position, View convertView, ViewGroup parent) { 

    if(convertView == null) { 
     convertView = mInflater.inflate(R.layout.list_item_with_toggle, null); 
    } 

    toggleButtons[position] = (ToggleButton)convertView.findViewById(R.id.toggleEnable); 


    switch (position){ 

     case 0: 
      toggleButtons[position].setOnCheckedChangeListener(new OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        Toast.makeText(mContext, ""+0, Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      break; 
     case 1:     
      toggleButtons[position].setOnCheckedChangeListener(new OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        //Toast.makeText(mContext, ""+isChecked, Toast.LENGTH_SHORT).show(); 
        if(isChecked) { 
         if(!toggleButtons[0].isChecked()) { 
          // Toast.makeText(mContext, "elemento 1 "+toggleButtons[1].isChecked(), Toast.LENGTH_SHORT).show(); 
          toggleButtons[0].setChecked(true); 


         } else { 
          //things to do if toggleButtons[0] == true 
         } 
        } else { 
         //things to do if isChecked == false 
        } 

       } 
      }); 
      break; 
     default: 
       break; 
    } 

    return convertView; 
} 
} 

回答

1

想必你有某种代表列表中的每一行的一个目的,如果是的话,你可以尝试这样的事:

  • 添加链接的项目列表/阵列到您的对象并在适用的情况下填充它。
  • 点击按钮,更新链接的项目。
  • 致电notifyDataSetChanged()并强制重画列表。
+0

对不起,我还没有线索怎么办。请耐心等待。当我设置第二个切换按钮时,我能做些什么来设置第一个切换按钮? – rosekarma 2014-10-27 17:12:03

+0

你可以发布你的代码吗? – Philio 2014-10-27 17:12:52