我有一个定制的listView,其中包含一些视图(比如textView和imageView)。当列表项获得焦点时,我想更改它的背景色。我已经为我的转换视图设置了OnfocusChange,但是它不起作用。这是我的霍尔德班:
private class Holder {
ImageView iconImage;
TextView titleText ;
TextView costText ;
}和getView方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Item item = item.get(position);
final Holder temp;
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_item, null);
temp = new Holder();
temp.iconImage = (ImageView) convertView
.findViewById(R.id.iconImageView);
temp.titleText = (TextView) convertView
.findViewById(R.id.titleTextView);
temp.costText = (TextView) convertView
.findViewById(R.id.costTextView);
convertView.setTag(temp);
} else {
temp = (Holder) convertView.getTag();
}
temp.titleText.setText(item.getItemTitle());
//this focus listener doesn't work.
convertView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
temp.titleText.setBackground(context.getResources()
.getDrawable(
R.drawable.green_background));
} else {
temp.titleText.setBackground(context.getResources()
.getDrawable(R.drawable.black_background));
}
}
});
}如何为列表视图中的每个列表项设置OnFocusChange侦听器?
发布于 2014-09-13 10:13:57
经过几次搜索,我发现,在列表视图中使用focus,以便在选择列表项时更改其背景,并不是一个好的解决方案。因为焦点不在列表视图中,直到屏幕结束。实际上,如果您为您的onFocusChange设置了listView侦听器,它就不会再向下滚动(当然是用键盘),解决这个问题的更好的解决方案是setOnItemSelected。如果您想了解解决方案的更多细节,可以查看以下问题:
Programmatically select item ListView in Android
附加信息:我正在开发一个电视应用程序,没有触摸屏,我必须处理所有键盘事件。因此,对于普通的应用程序开发人员来说,这个问题可能不会发生。
发布于 2014-09-10 11:58:00
您是否尝试过将可聚焦和可聚焦模式设置为true?
android:focusable="true"
android:focusableInTouchMode="true"并尝试将文本视图和图像视图的可聚焦设置为false。
https://stackoverflow.com/questions/25764327
复制相似问题