У меня проблемы с изменением состояния 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;
}
}
Я создал xml для состояния ImageView следующим образом:
<?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>
В рамках своей деятельности я создал следующее OnListItemClick()
, чтобы создать всплывающее сообщение, которое, кажется, также фокусируется на 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();
}
РАЗЪЯСНЕНИЕ о том, что я хочу, чтобы произошло:
У меня есть пункты списка, которые я хочу сделать двумя вещами; щелкните по элементу и получите сообщение с тостом, щелкните по представлению изображения и переключите представление изображения в состояние закладки в изображении, а также в бэкэнде.
В данный момент у меня работает тост-сообщение, но изображение не полностью работает ...
Я приложил скриншот элемента списка, чтобы показать, как он настроен, и объяснить, что происходит, когда я нажимаю на различные области.
Верхний элемент списка был нажат и удержан, и я получаю, что изображение меняется на сфокусированное, но не кликнутое изображение, как показано в моем отрисовываемом XML-файле выше, но когда я заканчиваю щелчок, звезда становится более серой, чем другие записи, но оно не превращается в изображение состояния щелчка, которое является желтой звездой.
Когда я щелкаю в другом месте, а не на звезде, появляется всплывающее сообщение, которое я и собирался совершить, но я также замечаю, что звезда также становится сфокусированной. Я чувствую, что у меня возникли проблемы с наследованием, а также я не получаю состояние, чтобы придерживаться ImageView.