Я полагаю, что если вы хотите какой-то сигнал выбора, вам нужен фокусируемый объект. Тем не менее, с фокусируемым объектом (таким как кнопка), присоединение OnItemClickListener к GridView не работает (если я правильно помню). Скорее, вы должны индивидуально прикрепить OnClickListener к каждому элементу в getView () в адаптере.
адаптер:
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
Button button;
if (convertView == null) { // if it's not recycled, initialize some attributes
button = new Button(mContext);
// set layout params (make sure its GridView.layoutParams)
// and other stuff
}
else {
button = (Button) convertView;
}
button.setBackgroundResource(mThumbIds[position]); // mThumbIds hold Resource Ids
button.setOnClickListener(new OnClickListener() {
onClick(View v) {
// store directly to database here, or send it with the activity with sharedPreferences (below)
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences("MY_PREFERENCE", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("button_id", mThumbIds[position]);
// Commit the edits!
editor.commit();
}
});
return button;
}
}
На стороне активности, кнопка сохранения на ClickListener:
onClick(View v) {
// Restore preferences
SharedPreferences settings = getSharedPreferences("MY_PREFERENCE", 0);
int id = settings.getInt("button_id", -1);
// now safe all stuff to database
}
Возможно, отсутствуют детали, потому что кнопка фокусируется, но я думаю, что так и должно быть. Кроме того, вы добьетесь выбора, используя определенный XML-ресурс селектора. Это, однако, следует рассмотреть в отдельном вопросе.
Редактировать 1:
На самом деле, теперь, когда я думаю об этом, я не уверен, может ли быть нарисованный .xml (селектор) с идентификатором. Позже мне придется реализовать это дома и попробовать.
Редактировать 2:
Я добавил часть sharedPreference
Редактировать 3:
Добавлен запрос стороны активности для sharedPreference.