#java #android #listview
#java #Android #listview
Вопрос:
Поэтому я создал этот список из 5-6 элементов. Я настроил метод OnItemClickListener. Я хочу получить позицию щелкнутого списка. Например, если на первом номере я должен получить соответствующую позицию и сохранить ее в переменной. Если я нажму на номер два, я должен получить соответствующую позицию и так далее. Я новичок, поэтому, пожалуйста, объясните.
final ListView listView = (ListView) findViewById(R.id.listView);
ArrayList<String> abcd = new ArrayList<>();
abcd.add("Number One");
abcd.add("Number Two");
abcd.add("Number Three");
abcd.add("Number Four");
abcd.add("Number Five");
abcd.add("Number Six")
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.list_view);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
int position = listView.getItemIdAtPosition(position);
Toast.makeText(MainActivity.this, "Clicked" position , Toast.LENGTH_SHORT).show();
}
});
Комментарии:
1.
i
это позиция выбранного элемента. Просто прочитайте документацию по методу, и вы бы знали2. int i — это позиция , поэтому произнесите свой тост следующим образом
Toast.makeText(MainActivity.this, "Clicked" i ,Toast.LENGTH_SHORT).show();
3. onItemClick… {Строковый элемент = abcd.get(позиция);
4. Я попробовал это только сейчас, и приложение продолжало сбоить, не знаю почему. есть какие-нибудь идеи?
Ответ №1:
Поместите список в качестве частного поля;
private List<String> abcd = new ArrayList<>();
и в вашей логике:
final ListView listView = (ListView) findViewById(R.id.listView);
abcd.add("Number One");
abcd.add("Number Two");
abcd.add("Number Three");
abcd.add("Number Four");
abcd.add("Number Five");
abcd.add("Number Six")
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.list_view);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String selectedElement = abcd.get(i);
}
});
selectedElement будет вашим элементом, который вы можете сохранить
Ответ №2:
Я бы попробовал это:
listview.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3)
{
String selectedFromList =(String) (listview.getItemAtPosition(position).toString());
Log.d("Selected: ", selectedFromList);
}
});
Ответ №3:
Попробуйте это:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int pos, long id) {
String item = abcd.get(pos);
Toast.makeText(this, "Item: " item " At Position: " pos, Toast.LENGTH_SHORT).show();
}
});