【问题标题】:Android GridView IfThenElse in OnItemClickOnItemClick 中的 Android GridView IfThenElse
【发布时间】:2013-12-24 14:54:07
【问题描述】:

我在GridView 中有两个TextViews 和一个ImageView,并在用户点击它时尝试更改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); 
}
} 
}); 

【问题讨论】:

  • 这种对象不能用==比较

标签: android android-imageview textview android-gridview


【解决方案1】:

您需要使用 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); 
}

在每次点击项目时触发,因此在第一次点击后,除非您正确进行比较,否则您不会注意到变化。

【讨论】:

    【解决方案2】:

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

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

    中调用 yourGridViewAdapter.notifyDataSetChanged();

    当用户点击 ImageView 时试图改变它的背景。

    为此,您必须在res 文件夹中使用selector 在该文件夹中创建drawable 文件夹创建selector

    代码sn-p

    <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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多