代码之家  ›  专栏  ›  技术社区  ›  AlexKost

带有切换按钮的ListView滚动不顺畅

  •  0
  • AlexKost  · 技术社区  · 9 年前

    我有一个自定义ListView。它由游标适配器填充。它的每一行都包括一个ImageView、两个TextView和一个ToggleButton。这些都很好。当我将ToggleButtons组的状态更改为true时,当我快速滚动listView时,它会挂起一秒钟并滚动。当一组未选中的按钮出现在一组已选中的按钮之后,反之亦然。为什么列表视图在滚动时挂起?

    如有任何帮助,将不胜感激。我的代码如下:

     public void bindView(View view, Context context, final Cursor cursor) {
    
        final ViewHolder viewHolder = new ViewHolder(view);
    
            (...)
    
        if (viewHolder.toggle_artist != null) {
            viewHolder.toggle_artist.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    int favourite = isChecked ? 1 : 0;
                    ContentValues value = new ContentValues();
                    String where = AmdmContract.ArtistEntry.TABLE_NAME + "." +
                            AmdmContract.ArtistEntry._ID + " = " + tableId;
                    value.put(AmdmContract.ArtistEntry.COLUMN_FAVORITE, favourite);
                    mContext.getContentResolver()
                            .update(AmdmContract.ArtistEntry.CONTENT_URI,
                                    value, where, null);
                }
            });
            int favFromDB = cursor.getInt(COL_FAVOURITE);
            viewHolder.toggle_artist.setChecked(favFromDB == 1);
        }
    }
    
    2 回复  |  直到 9 年前
        1
  •  2
  •   Hiren Patel    9 年前

    请尝试以下切换按钮CheckChangeListener的代码。

    原因: 在里面 基本适配器 获取视图() 方法 电话 在…上 每一卷 属于 列表视图 它会呼叫 onCheckChangeListener() 自动地

    所以用以下代码替换代码:

    tgl.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
    
             ToggleButton selectedToggle = (ToggleButton) v;
    
             if(selectedToggle.isChecked()){
    
                   // Code if toggle is checked
    
             }else{
    
                   // Code if toggle is not checked
    
              }
    
           }
      });
    

    希望它对你有所帮助。

        2
  •  0
  •   Community CDub    8 年前

    在列表视图项目中显示复选框或切换按钮时,这是一个常见问题。一旦选中了几个复选框,然后向下滚动列表视图,再次向上滚动后,所有内容都会变得混乱。 建议使用可跟踪复选框状态的布尔数组。

    检查此已答复的帖子- Custom listview with checkbox problem