我有两个TextViews
和一个ImageView
GridView
,并试图在用户单击它时更改ImageView
的背景。我可以第一次更改背景,之后如果我单击它,则不会发生任何事情。另一个问题是,如果我向下滚动,我会看到其他图像的背景图像发生变化。我想在特定位置更改图像的背景。假设如果我单击第一个项目图像,我只想更改该图像。下面是我的代码。提前感谢,我非常感谢您的帮助。
GridView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {
btnCheckImage1 = (ImageView)v.findViewById(R.id.btnCheckImaget);
if (btnCheckImage1.getDrawable() != v.getResources().getDrawable(R.drawable.compselection_checked_btn) ) {
btnCheckImage1.setBackgroundResource(R.drawable.compselection_checked_btn);
}
else if (btnCheckImage1.getDrawable() == v.getResources().getDrawable(R.drawable.compselection_checked_btn) ) {
btnCheckImage1.setBackgroundResource(R.drawable.compselection_btn);
}
}
});
您需要使用 OBJECT.equals(OBJECT) 方法来比较可绘制对象。
btnCheckImage1 = (ImageView)v.findViewById(R.id.btnCheckImaget);
if (btnCheckImage1.getDrawable() != v.getResources().getDrawable(R.drawable.compselection_checked_btn) ) {
btnCheckImage1.setBackgroundResource(R.drawable.compselection_checked_btn);
}
每次单击项目时都会触发,因此在第一次单击后,除非您正确进行比较,否则您不会注意到更改。
我想在特定位置更改图像的背景。 说如果我单击第一个项目图像,我只想为此进行更改 图像。
对于此问题,您必须调用 yourGridViewAdapter.notifyDataSetChanged(); in onItemClick
尝试在用户单击图像视图时更改其背景。
为此,您必须res
文件夹中使用selector
drawable
该文件夹中的文件夹创建selector
代码片段
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blue" android:state_selected="true"/>
<item android:drawable="@color/transparent"/>
</selector>
main layout's gridview
设置网格视图的选择器,如 TJIS
android:listSelector="@drawable/your_selector"