У меня есть вид сетки кнопок, сгенерированных CursorAdapter.Когда CursorAdapter передается в Gridview, представление отображается правильно, однако первый элемент в сетке не запускает событие OnClickListener.
Если я выбираю другую кнопку в сетке, событие запускается правильно, однако, если я выбралПервая кнопка, затем другая кнопка, она загружает действие первой кнопки, а затем действие кнопки раздела.
При тестировании это кажется только проблемой в Android 2.2 на моем эмуляторе, мой телефон 1.5 работает, как и ожидалось.Я вытер эмулятор, но, похоже, это ничего не изменило.
public class AdapterMedia extends CursorAdapter {
Context context;
Cursor cursor;
public AdapterMedia(Context context, Cursor dataset)
{
super(context, dataset);
this.context = context;
this.cursor = dataset;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup arg2)
{
Button imageView;
imageView = new Button(context);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setPadding(8, 8, 8, 8);
imageView.setId(cursor.getInt(0));
imageView.setText(cursor.getString(1));
imageView.setOnClickListener(buttonClickListener);
return imageView;
}
@Override
public void bindView(View arg0, Context arg1, Cursor arg2)
{
Button imageView = (Button) arg0;
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setPadding(8, 8, 8, 8);
imageView.setId(cursor.getInt(0));
imageView.setText(cursor.getString(1));
imageView.setOnClickListener(buttonClickListener);
}
public OnClickListener buttonClickListener = new OnClickListener()
{
public void onClick(View view)
{
Bundle dataset = new Bundle();
dataset.putInt("media_id", view.getId());
Intent showMedia = new Intent(context.getApplicationContext(), MediaActivity.class);
showMedia.putExtras(dataset);
context.startActivity(showMedia);
}
};
}