我想像自定义列表视图中的单选按钮一样使用imageview,所以我使用了for循环和getChildAt(position)
但是当我向下滚动时它不能很好地改变imageview图像src。
这是我的代码:
lvChooseReader.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int position, long id) {
for (int i = 0; lvChooseReader.getLastVisiblePosition() - lvChooseReader.getFirstVisiblePosition() > i; i++) {
View childView = lvChooseReader.getChildAt(i);
ImageView myImage= (ImageView) childView.findViewById(R.id.ivTest);
if (i == position) {
rr.setImageDrawable(getResources().getDrawable(R.drawable.check_mark_default));
}else {
rr.setImageDrawable(getResources().getDrawable(R.drawable.check_mark_selected));
}
}
lvChooseReader.invalidateViews();
}
});
或者任何人都可以给我一个链接,点击项目点击而不是点击单选按钮...
答案 0 :(得分:0)
lvChooseReader.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int position, long id) {
for (int i = lvChooseReader.getFirstVisiblePosition(); lvChooseReader.getLastVisiblePosition() > i; i++) {
View childView = lvChooseReader.getChildAt(i);
ImageView myImage= (ImageView) childView.findViewById(R.id.ivTest);
if (i == position) {
rr.setImageDrawable(getResources().getDrawable(R.drawable.check_mark_default));
}else {
rr.setImageDrawable(getResources().getDrawable(R.drawable.check_mark_selected));
}
}
lvChooseReader.invalidateViews();
尊重是:
在此代码中,i的值将介于第一个可见项目和最后一个可见项目之间,在您的情况下,i的值介于on和总可见项目之间。
例如:
如果项目2-3-4-5可见,我应该是1-2-3-4(列表视图中这些项目的位置)。 在你的情况下它是0-1-2-3
答案 1 :(得分:-1)
我通过使用静态值解决了我的问题:
我在包含我的listview
的dialogfragment中添加了这个静态变量static int selectedReaderId;
对于listview中的onItemClick,我添加:
ChooseReader reader = chooseReaderArrayList.get(position);
selectedReaderId=reader.getReaderID();
lvChooseReader.invalidateViews();
然后在我的getview里面的自定义适配器中添加这个
final ChooseReader chooseReader = readers.get(position);
if (chooseReader.getReaderID()==ChooseReaderDialog.selectedReaderId){
holder.ivTest.setImageDrawable(context.getResources().getDrawable(R.drawable.check_mark_default));
}else { holder.ivTest.setImageDrawable(context.getResources().getDrawable(R.drawable.check_mark_selected));
}