gpt4 book ai didi

java - ImageView onClickListener()

转载 作者:行者123 更新时间:2023-12-01 15:29:15 26 4
gpt4 key购买 nike

我在更改将列表项标记为已添加书签的 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>

在我的 Activity 中,我创建了以下 OnListItemClick() 来创建一条弹出的 Toast 消息,但似乎也将焦点放在 ImageView 上。

    public void onListItemClick(ListView parent, View view, int position, long id) {
SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase();
Cursor c = (Cursor) getListAdapter().getItem(position);
String arg = c.getString(c.getColumnIndex("_id"));
Cursor cursor = db.rawQuery("Select category, subcategory From DiagLookup Where _id = ?", new String[]{""+arg});
cursor.moveToFirst();

Context context = getApplicationContext();
CharSequence text = "Category: " + cursor.getString(cursor.getColumnIndex("category")) + "\nSubcategory: " + cursor.getString(cursor.getColumnIndex("subcategory"));
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();
}

澄清我想要发生的事情:

我有一个列表项,我想做两件事;单击该项目并获取一条 toast 消息,然后单击 ImageView 并将 ImageView 切换到图像中以及后端中的书签状态。

目前,我的 toast 消息正常工作,但 ImageView 并未完全正常工作......

我附上了列表项的屏幕截图,以显示它的设置方式并解释当我单击各个区域时发生的情况。

ListItem with ImageView clickable

顶部列表项已被单击并保持,我得到的是图像更改为聚焦但未单击的图像,如上面的可绘制 xml 中所示,但是当我完成单击时,星星变得比其他条目更深灰色,但是它不会变成单击的状态图像(黄色星星)。

当我单击其他任何地方而不是星星时,就会弹出 toast 消息,这正是我想要发生的,但我也注意到星星也变得聚焦。我觉得我遇到了一些继承问题,而且也没有让 ImageView 保持状态。

最佳答案

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

如果是这样,我会这样做。

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

android:onClick = "Image1"

然后在你的java文件中,你需要引用它。您可能想在您的 Activity 中实现 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,但我的只包含 1 行代码。

我不确定这是否完全回答了您的问题,但这是迄今为止我所知道的有关 Android (Java) 编码的全部内容。我希望这会有所帮助。

关于java - ImageView onClickListener(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9763458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com