Java ImageView onClickListener()

Java ImageView onClickListener(),java,android,onclick,imageview,onclicklistener,Java,Android,Onclick,Imageview,Onclicklistener,更改将列表项标记为书签的ImageView的状态时遇到问题 人们提到要创建一个新的OnClickListener(),我已经有了它,但是当我单击ImageView时,它会进入聚焦状态,但是当您完成单击后,它不会变为按下状态图像。此外,当我单击列表项时,我注意到ImageView再次聚焦。我不确定我遗漏了什么: public class DxSimpleCursorAdapter extends SimpleCursorAdapter { Context context; Activity act

更改将列表项标记为书签的
ImageView
的状态时遇到问题

人们提到要创建一个新的
OnClickListener()
,我已经有了它,但是当我单击ImageView时,它会进入聚焦状态,但是当您完成单击后,它不会变为按下状态图像。此外,当我单击列表项时,我注意到
ImageView
再次聚焦。我不确定我遗漏了什么:

public class DxSimpleCursorAdapter extends SimpleCursorAdapter {
Context context;
Activity activity;
ImageView image;

public DxSimpleCursorAdapter(Context context, int layout, Cursor c,
        String[] from, int[] to) {
    super(context, layout, c, from, to);
    this.context=context;
    this.activity=(Activity) context;
}

@Override
public View getView(int position, View convertView, ViewGroup parent){
    View view = super.getView(position, convertView, parent);
    long id = getItemId(position);
    final ImageView image = (ImageView) view.findViewById(R.id.fav);

    image.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){
            image.setBackgroundResource(R.drawable.ic_fav);

            final Button btn = (Button) v.findViewById(R.id.fav);
            btn.setPressed(true);
        }
    });
    return view;
}
}
我为ImageView状态创建了xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_star_off_normal"
    android:state_checked="false"
    android:state_window_focused="false" />
<item android:drawable="@drawable/btn_star_on_normal"
    android:state_checked="true"
    android:state_window_focused="false" />

<item android:drawable="@drawable/btn_star_on_pressed"
    android:state_checked="true"
    android:state_pressed="true" />
<item android:drawable="@drawable/btn_star_off_pressed"
    android:state_checked="false"
    android:state_pressed="true" />

<item android:drawable="@drawable/btn_star_on_focused"
    android:state_checked="true"
    android:state_focused="true" />
<item android:drawable="@drawable/btn_star_off_focused"
    android:state_checked="false"
    android:state_focused="true" />

<item android:state_checked="false" android:drawable="@drawable/btn_star_off_normal" />
<item android:state_checked="true" android:drawable="@drawable/btn_star_on_normal" />
</selector>
澄清我希望发生的事情:

我列出了我想做的两件事;单击该项目并获得toast消息,然后单击imageview,并在图像和后端将imageview切换为书签状态

目前,我有吐司消息工作,但imageview不完全工作

我附上了一个列表项目的屏幕截图,以显示它是如何设置的,并解释当我点击各个区域时发生了什么

顶部列表项已被单击并保持不变,我得到的是图像变为聚焦但未锁定的图像,如上面我的可绘制xml所示,但当我完成单击后,星形变为深灰色,然后是其他条目,但它不会变为单击状态图像,即黄色星形


当我点击其他任何地方而不是星星时,会弹出祝酒词,这是我想要出现的,但我也注意到星星也会聚焦。我觉得我遇到了一些继承问题,也没有让ImageView的状态保持不变。

那么您的意思是,您希望在单击图像时显示一条Toast消息,这就是您希望发生的一切,对吗

如果是这样的话,我有一个办法

在XML中,首先需要确保已将onClick设置到按钮或图像上。您需要将其添加到每个变量中

android:onClick = "Image1"
然后在java文件中,您需要引用它。您可能希望在活动中实现OnClickListener

public class DxSimpleCursorAdapter extends SimpleCursorAdapter implements OnClickListener{
然后在java文件中引用它

public void Image1 (View v) {
    Toast.makeText(this, R.string.TEXT, Toast.LENGTH_SHORT).show();
}
您可以使用自己的方法创建toast,但我的方法只包含一行代码

我不确定这是否完全回答了你的问题,但到目前为止,我只知道为Android(Java)编写代码。我希望这有帮助

public void Image1 (View v) {
    Toast.makeText(this, R.string.TEXT, Toast.LENGTH_SHORT).show();
}