当我点击ListView中的每一行时,我希望行内的TextView变为粗体,并且完美无缺,但我遇到的问题是当我点击ListView中的另一个项目时,另一个行项目仍然是粗体以及刚刚选择的那个
如何在选择另一个后,将最后选择的ListView行TextView的字体恢复为NORMAL?感谢。
这是我的代码:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
TextView name = (TextView) v.findViewById(R.id.songTextView);
TextView artist = (TextView) v.findViewById(R.id.artistTextView);
name.setTypeface(null, Typeface.BOLD);
artist.setTypeface(null, Typeface.BOLD);
}
答案 0 :(得分:4)
实现此目标的一种简单方法是使用粗体行的位置向adaper添加成员,使用-1初始化它。 在 onItemClickListener 中调用适配器并将字段设置为按下的位置,然后调用 notifiyDataSetChanged 。在 getview 上的适配器上检查当前位置是否为粗体或适配器中的bold_position字段。
一些代码:
adaper:
public class CustomAdapter extends ...{
int mBoldPos = -1;
public void setBoldPos(int newPos)
{
this.mBoldPos = newPos;
}
fragment-
mListView.setOnItemClickListener(new ....)
{
onItemClick(AdapterView<?> parent, View view, int position, long id)
{
((CustomAdapter) mListView.getAdapter()).setBoldPos(position);
((CustomAdapter) mListView.getAdapter()).notifiyDataSetChanged();
}
}
适配器:
getView(..)
{
if (pos == mBoldPos)
{
// Bold me up
}
}