Принцип работы списка будет таким:
- Создаём ListView и на событие OnItemClick вешаем слушатель (назовём его, к примеру Operation).
- В методе обработчике слушателя строим диалоговое окно со списком операций. Список операций в виде String[] и заголовок окна передаём в Operation при вызове конструктора слушателя.
- На событие клика по названию операции в диалоговом окне вешаем этот же слушатель. Для этого наш класс Operation должен реализовывать не только интерфейс OnItemClickListener но и DialogInterface.OnClickListener.
- Во втором методе-обработчике (onClick) выполняем операцию над выбранным элементом нашего ListView. Для этого объект выбранного элемента нужно получить в первом методе-обработчике (onItemClick) и передать во второй конструктор Operation.
А в том месте, где нужно построить список поступаем просто:
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- public class Operation implements DialogInterface.OnClickListener, OnItemClickListener {
- private Activity act;
- private Object obj;
- private String title;
- private String[] oper_list;
- public Operation(Activity act, String title, String[] oper_list) {
- this.act = act;
- this.title = title;
- this.oper_list = oper_list;
- }
- public Operation(Activity act, Object obj) {
- this.act = act;
- this.obj = obj;
- }
- public void onClick(DialogInterface di, int i) {
- if (i==0) {
- // TODO: first oheration with obj
- }
- // TODO: next operations with obj
- }
- public void onItemClick(AdapterView<?> av, View view, int i, long l) {
- Object curr = av.getItemAtPosition(i);
- AlertDialog.Builder builder = new AlertDialog.Builder(act);
- builder.setTitle(title);
- builder.setItems(oper_list, new Operation(act, curr));
- AlertDialog alert = builder.create();
- alert.show();
- }
- }
ListView lw = new ListView(this);
String[] operations = {"Edit", "Delete"};
lw.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, items));
lw.setOnItemClickListener(new Operation(this, "Operations", operations));
Комментариев нет:
Отправить комментарий