OnItemClickListener с помощью ArrayAdapter для ListView
Я хочу иметь OnItemClickListener для ListView, который я создаю, используя ArrayAdapter
Это код, который я использую для его создания:
List values = datasource.some_search("Wednesday","11"); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, values); setListAdapter(adapter);
Как реализовать onItemClickListener?
- Настраиваемые виджеты в Android
- Каковы существенные различия между $ (sel) .bind ("click", $ (sel) .click (, $ (sel) .live ("click", $ (sel) .on ("click"?
- Как добавить событие click к элементу?
- Изменить цвет текста в тексте TextView и щелкнуть?
- Разница между событием OnClick () и OnClickListener?
Благодаря!
EDIT: Я использую в своем ArrayAdapter и ListView строку объектов.
EDIT 2: Дополнительный код:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datasource = new CommentsDataSource(this); datasource.open(); //check if database is populated if NOT, populate with txtToDb(); if (!datasource.isPopulated()) { // Database is not populated so copy it from assets here try { txtToDb(); Log.i("Database", "Was not Populated"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("Database", "Was not populated: txtToDb(); failed"); } } else { Log.i("Database", "Populated"); } //wat to show on screen: List values = datasource.search("Wednesday","11"); // Use the SimpleCursorAdapter to show the // elements in a ListView ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, values); setListAdapter(adapter); }
EDIT 3: XML:
- Получить контекст внутри onClick (DialogInterface v, int buttonId)?
- Как передать событие onClick для своего родителя на Android?
- Событие OnClick для кнопки в пользовательском уведомлении
- Как отличается атрибут android: onClick XML от setOnClickListener?
- Как вызвать JSF-бэк-метод только в том случае, когда onclick / oncomplete / on ... происходит событие, а не на загрузке страницы
- Как получить событие click ONLY только для родительского DIV, а не для детей?
- Использование атрибута onClick в макете xml вызывает NoSuchMethodException в диалоговом окне Android
- Изменить фон списка ListView - странное поведение
Использовать OnItemClickListener
ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView adapter, View v, int position, long arg3) { String value = (String)adapter.getItemAtPosition(position); // assuming string and if you want to get the value on click of list item // do what you intend to do on click of listview row } });
Когда вы нажимаете на строку, слушатель запускается. Таким образом, вы setOnClickListener
в listview и используете анонимный внутренний class OnItemClickListener
.
Вы также переопределите onItemClick
. Первым параметром является адаптер. Второй параметр – это вид. Третьим параметром является позиция (индекс элементов списка).
Используя позицию, вы получаете элемент.
Изменить: из ваших комментариев я предполагаю, что вам нужно установить адаптер o listview
Поэтому, предполагая, что ваша деятельность расширяет ListActivtiy
setListAdapter(adapter);
Или если ваш class активности расширяет действие
ListView lv = (ListView) findViewById(R.id.listview1); //initialize adapter lv.setAdapter(adapter);
вы можете использовать этот способ …
listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, final int position, long id) { String main = listView.getSelectedItem().toString(); } });
Хорошо, после того, как информация о том, что ваша активность расширяет ListActivity, представляет собой способ реализации OnItemClickListener:
public class newListView extends ListView { public newListView(Context context) { super(context); } @Override public void setOnItemClickListener( android.widget.AdapterView.OnItemClickListener listener) { super.setOnItemClickListener(listener); //do something when item is clicked } }
Я использую arrayadpter, используя этот следующий код, я могу получить элементы
Строковое значение = (String) adapter.getItemAtPosition (позиция);
listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { String string=adapter.getItem(position); Log.d("**********", string); } });