尝试突出显示ListView行项onClick时出现问题

时间:2015-08-03 11:13:31

标签: android listview

当我点击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);


}

1 个答案:

答案 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
  }
}