android - listView 项目上有多个 ToggleButton。单击其中一项后,其他项就会打开/关闭

标签 android adapter togglebutton

我有一个包含多个 ToggleButton 项目的 ListView 。当我点击其中一个时,另一个就会打开/关闭。但是,它执行与右侧 ListView 项目相关的操作。

它们在自定义适配器中进行管理,这是我的代码:

public class AdapterContacts extends BaseAdapter implements OnClickListener {

ToggleButton btnIsSending;
     .
     .
     .

   public View getView(int position, View convertView, ViewGroup viewGroup) {
    Contact entry = contactsList.get(position);
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.contact_row, null);
    }
     .
     .
     .
   // isSending button
    btnIsSending = (ToggleButton) convertView.findViewById(R.id.btnIsSending);
    btnIsSending.setFocusableInTouchMode(false);
    btnIsSending.setFocusable(false);
    btnIsSending.setOnClickListener(this);
    btnIsSending.setTag(entry);

    return convertView;
}

    public void onClick(View view) {
    final Contact entry = (Contact) view.getTag();
    Log.d(TAG, "entry " + entry.getPhoneNr());

    LookalizeData lookData = (LookalizeApp.getContext()).lookalizeData;
    // Toggle send button
    if( view.getId() == btnIsSending.getId()){
        if(btnIsSending.isChecked())
             ...
        else
                     ... 
      }       

还有其他按钮,它们工作正常。

有什么想法或经验可以分享吗?

最佳答案

在您的 getView 中,您必须执行类似的操作(此代码可让您了解它在您的情况下如何工作):

ListView lv = ((ListActivity)context).getListView();
// Containing all check states
SparseBooleanArray sba = lv.getCheckedItemPositions();

btnIsSending = (ToggleButton) convertView.findViewById(R.id.btnIsSending);
btnIsSending.setFocusableInTouchMode(false);
btnIsSending.setFocusable(false);
btnIsSending.setTag(entry);

btnIsSending.setChecked(false);

// Cursor is passed as an argument.
if(sba != null)
  if(sba.get(cursor.getPosition()))
     btnIsSending.setChecked(true);

这就是您在 Activity 方面所需要的。

您已通过 xml 中的 android:choiceMode 或使用 setChoiceMode 将 ListView 设置为多选模式。

您必须删除按钮上的 onClick 监听器。无论您在按钮的 onClick 中做什么,都必须将该逻辑添加到 ListActivtiyonListItemClick 中。

关于android - listView 项目上有多个 ToggleButton。单击其中一项后,其他项就会打开/关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8409900/

相关文章:

java - 从混淆器中排除包

java - exoplayer 2.11.8版本如何过载控制

android - RecyclerView 布局发生变化,滚动时值被截断

android - RecyclerView 项目没有改变

javascript - 使用 CSS Togglebuttons 和 .on() 绑定(bind)器生成动态字段

android - 使用 Android 4.0 风格的切换按钮

android - 无法连接开发服务器。确保打包服务器正在运行

java - getOAuthRequestToken 在使用 twitter4j 时返回 null

android - 自动完成项目消失

jquery - 如何使单选按钮看起来像切换按钮