我已经设置了一个列表视图,其中ListItems由ArrayAdapter填充。还要设置一个OnClickListener()来接收任何listitem的点击,如下所示:
private TextView prev = null;
final ListView listView = findViewById(R.id.drawerlist);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(prev != null)
{
prev.setTypeface(null, Typeface.NORMAL);
}
TextView textView = listView.getChildAt(i).findViewById(R.id.drawertext);
// drawertext is ID of text inside list items
prev = textView;
textView.setTypeface(null, Typeface.BOLD);;
}
});
目标是将点击的项目的字体更改为粗体,并恢复之前选择的项目的字体(为此目的使用 prev )。 问题是,当用户点击一个项目以及该列表项时,其他一些列表项的字体也会发生变化。
我认为原因可能是'滑动窗口'概念,因为适配器回收了listview的视图......不确定。无论如何,如何防止这种情况,而是在点击时唯一地识别每个列表项。