当试图突出显示ListView行项onClick时出现问题
问题描述:
当我点击ListView中的每一行时,我希望行内的TextView变成粗体,并且工作完美,但是我面临的问题是,当我点击在我的ListView中的另一个项目上,另一个行项目仍然是粗体以及刚刚选择的项目当试图突出显示ListView行项onClick时出现问题
如何将最后选定的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);
}
答
一个简单的方法来实现,这是一个成员添加到adaper与粗体行的位置,以-1初始化它。 在您的onItemClickListener调用适配器并将字段设置为按下的位置,然后调用notifiyDataSetChanged。在你的适配器getview检查当前位置是否为粗体或由适配器中的bold_position字段。
一些代码:
adaper:
public class CustomAdapter extends ...{
int mBoldPos = -1;
public void setBoldPos(int newPos)
{
this.mBoldPos = newPos;
}
片段 -
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
}
}
尝试使名称和艺术家textviews全球和名称初始化之前=(TextView)v.findViewById(Ri d.songTextView);检查是否为空然后初始化否则使字体。正常,然后初始化 –
尝试使用选择器可能是您的问题得到解决。 –
您使用适配器来显示Listview数据吗? – Meenaxi