[英]ListView doesn't scroll smoothly when trying to use setText in onScroll
[英]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.