簡體   English   中英

帶切換按鈕的ListView不能平滑滾動

[英]ListView with toggle button doesn't scroll smoothly

我有一個自定義的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);
    }
}

您能否為切換按鈕CheckChangeListener嘗試以下代碼。

原因:BaseAdapter getView()方法調用 的ListView每一個卷軸 ,它會()會自動調用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

          }

       }
  });

希望對您有幫助。

當您在列表視圖項中顯示checkboxex或切換按鈕時,這是一個常見問題。 一旦選中了幾個復選框,然后向下滾動了列表視圖,再次向上滾動后,一切都變得混亂了。 建議使用維護一個布爾數組,該數組可以跟蹤復選框狀態。

檢查此已回答的帖子- 帶有復選框問題的自定義列表視圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM