私のListView
は単純なリストビューですが、彼には問題があります。
adapter
というSimpleCursorAdapter
を使用しています。アイテムをクリックするとTextViewを太字にし、背景を変更します。私はまた、以前に影響を受けた他のListViewアイテムをリセットする必要があります。リストビューのビューをリセットする
以下はonListItemClick
イベントのコードです。このコードは、表示可能なリスト項目をリセットします。選択した項目を正しく太字にします。しかし、ユーザーがスクロールしたときにTextViews
が太字になっていると、ビューがリサイクルされていると推測されます。
だから、onClick以前にクリックされたtextViewsをリセットし、クリックしたアイテムを太字にしたいとします。
私が期待コードとして機能していません:あなたはリサイクル業者ではなく、新しいものを作成する画面から古いビューを使用したとして、何が起こることは、通常あり
@Override
public void onListItemClick(ListView listView, View view, int position, long id)
{
super.onListItemClick(listView, view, position, id);
//Tablet
for (int i = 0; i < adapter.getCount(); i++)
{
View mView = listView.getChildAt(i);
if (mView != null)
{
//Reset Bold text to default
TextView mtv = (TextView)mView.findViewById(R.id.Name);
mtv.setTypeface(null, Typeface.BOLD);
LinearLayout ll = (LinearLayout)mView.findViewById(R.id.itemlayout);
ll.setBackgroundDrawable(null);
}
}
TextView tv = (TextView)view.findViewById(R.id.Name);
tv.setTypeface(null, Typeface.NORMAL);
LinearLayout ll = (LinearLayout)view.findViewById(R.id.itemlayout);
ll.setBackgroundResource(R.drawable.dashboard_list_selector);
}
}