OnItemClick中的Android GridView IfThenElse

时间:2013-12-24 14:54:07

标签: android android-imageview textview android-gridview

我在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); 
}
} 
}); 

2 个答案:

答案 0 :(得分:0)

您需要使用OBJECT.equals(OBJECT)方法来比较drawable。

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); 
}

每次点击都会触发,因此在第一次点击后,除非您正确进行比较,否则您不会注意到更改。

答案 1 :(得分:0)

  

我想在特定位置更改图像的背景。   说如果我点击第一个项目图像我想只为此更改   图像。

对于这个问题,您必须在onItemClick

中调用 yourGridViewAdapter.notifyDataSetChanged();
  

尝试在用户点击时更改ImageView的背景。

为此,你必须在selector文件夹中使用res在该文件夹中创建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为gridview设置选择器,如tjis

android:listSelector="@drawable/your_selector"