Android GridView IfThenElse in OnItemClick



我有两个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"

最新更新