2013-05-11 2 views
-1

Я считаю, что это очень распространенная задача:
GridView завышен с настраиваемыми макетами в качестве элементов. Каждый макет состоит из изображения и кнопки. Если пользователь нажимает на изображение, выполняется одно действие (например, изображение показано).
Если пользователь нажимает кнопку - другое действие (удаление элемента из GridView).
Первый реализован внутри onItemClick() AdapterView.OnItemClickListener.
Как реализовать последний?Android - GridView с двумя действиями за элемент

+2

Просьба указать свой код – Pragnani

+0

Самый простой способ, который я могу сказать, это установить позицию в TAG вашего представления, а затем в методе onClick получить значение TAG и переведите его в целое число. –

+0

Хорошо, позвольте мне перефразировать вопрос – sad1raf

ответ

0

Самый простой способ, которым я могу сказать, что установить позицию TAG ваш взгляд, а затем в методе OnClick получить значение TAG и приведение его в целое. (по запросу @ sad1raf я добавил свой комментарий в качестве ответа!)

0

Вы можете создать пользовательский ArrayAdapter и поместить его в GridView. Передайте как контекст, так и класс, который вы хотите вызвать после удаления объекта. Самое главное - передать массив с данными, которые будут использоваться для заполнения всех ячеек (в вашем случае массив целых чисел). Тогда внутри

@Override 
public View getView(int position, View convertView, ViewGroup parent) 

вы должны:

  • Открытое соединение с базой данных и получить данные
  • Создать диалог, чтобы сделать более безопасным удаление данных
  • Показать диалог по кнопке
нажав

Для второго шага вы можете сделать что-то вроде этого:

final AlertDialog.Builder builder = new AlertDialog.Builder(context); 

    builder.setTitle("Warning"); 
    builder.setMessage("Are you sure you want to permanently delete the selected item?"); 
    builder.setCancelable(true); 

    builder.setPositiveButton("Yes",new OnClickListener(){ 
     public void onClick(DialogInterface dialog, int id){ 
      dao.deleteEventData(item); 
      MyUtility.startActivityNoAnimsClearTop(context, classToLaunch); 
     } 
    }); 

    builder.setNegativeButton("No", new OnClickListener(){ 
     public void onClick(DialogInterface dialog, int id){ 
      dialog.dismiss(); 
     } 
    }); 

В моем коде я использую соединение с базой данных DAO, это хороший способ для управления данными, но вместо dao.deleteEventData (пункт), вы можете поместить каждый код, который нужен для удаления изображений. Затем, когда вы нажимаете кнопку, вы показываете диалог.

Button btnDeleteList = (Button)cell.findViewById(R.id.btnDeleteList); 
    btnDeleteList.setOnClickListener(new View.OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      builder.show(); 
     } 
    }); 
Смежные вопросы