【发布时间】:2017-01-05 05:11:22
【问题描述】:
我在onCreate 方法上以编程方式单击ListView 项目,如下所示:
// setting listener for ListView item click
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
changeView(i);
}
});
// Clicking ListView first position programmatically.
listview.performItemClick(listview.getChildAt(0), 0,
listview.getAdapter().getItemId(0));
在上面的代码中,当我调试代码 changeView(i); 时,programmatic 和 physical 点击均正确调用。
我正在使用 changeView() 更改 ListView 项目视图(TextView 和 ImageView)的颜色,如下所示:
private void changeView(int position) {
for (int i = 0; i < adapter.getCount(); i++) {
View v = getViewByPosition(i, listview);
ImageView imgIcon = (ImageView) v.findViewById(R.id.icon);
TextView txtTitle = (TextView) v.findViewById(R.id.title);
if (i == position) {
imgIcon.setColorFilter(ContextCompat.getColor(mActivity, R.color.app_red));
txtTitle.setTextColor(ContextCompat.getColor(mActivity, R.color.app_red));
} else {
imgIcon.setColorFilter(ContextCompat.getColor(mActivity, R.color.colorWhite));
txtTitle.setTextColor(ContextCompat.getColor(mActivity, R.color.colorWhite));
}
}
lvSlideMenu.setItemChecked(position, true);
lvSlideMenu.setSelection(position);
}
其中getViewByPosition()方法用于获取ListView项的视图:
public View getViewByPosition(int pos, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition) {
return listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}
问题: 当我点击物理(手动)而不是以编程方式。
提前致谢。
【问题讨论】:
标签: android listview onitemclick