【发布时间】:2014-08-20 11:14:47
【问题描述】:
我有一个 ListView 并且在每个 ListviewItem 中都有一个带有小星星的 ImageView(用于将其标记为收藏)。因此,我在自定义 ArrayAdapter 中的每个项目上都将 OnClickListener 放入 ImageView。
imgStar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap = ((BitmapDrawable)imgStar.getDrawable()).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable)(context.getResources().getDrawable(R.drawable.ic_action_not_important))).getBitmap();
if(bitmap != bitmap2) {
imgStar.setImageResource(R.drawable.ic_action_not_important);
} else {
imgStar.setImageResource(R.drawable.ic_action_important);
}
}
});
问题:当我得到一些项目并单击例如第一个项目的星号时,图像会发生应有的变化,但是一些项目降低了图像也会发生变化o.O 我用一些代码对其进行了测试:我不会想到的是它只是更改图像(在下面的另一个项目上),将在 onclick 中执行的代码仅针对我真正单击的项目而不是执行对于图像也发生变化的那个。
为什么列表中随机其他项目的图像也会改变?我希望有人可以帮助我。
自定义适配器构造代码
public LinkArrayAdapter(Context con, int textViewResourceId) {
super(con, textViewResourceId);
context = con;
}
【问题讨论】:
-
这段代码是否在自定义适配器中?
-
是的,此代码在添加到列表视图的自定义适配器中(在 getView 事件中)
-
您需要一个随机变化的图像,同时单击星形图像。对吧?
-
您需要将点击位置的位置存储在数组中并检查项目位置是否在数组内。
-
不,这完全不是我想要的:D 我只想在我真正点击的图像视图中更改图像,而不是在我从未点击过的项目的图像视图中更改图像
标签: java android android-listview imageview android-arrayadapter