2013-09-01 2 views
2

я использовал представление списка для отображения элементов моей базы данных SQLite следующим образом:Реализация OnClickListener в список элементов из списка

listView = (ListView) findViewById(R.id.listView1); 
db.open(); 
Cursor c = db.getAllHistory(); 
ArrayList<String> temparr = new ArrayList<String>(); 
if (c.moveToFirst()) { 
    do { 
     temparr.add(c.getString(0)+'\t'+c.getString(1)+'\t'+c.getString(2)+'\t'+c.getString(3)+'\t'+c.getString(4)+'\t'); 
    } while(c.moveToNext()); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, temparr); 
    listView.setAdapter(adapter); 
} else { 
    db.close(); 
} 

Теперь я хочу, чтобы получить доступ к определенному элементу списка с помощью OnItemClickListener. Как я должен это делать?

+0

Вы имеете в виду listview.setOnItemClickListener? –

+0

есть. Я сделал listView.setTextFilterEnabled (true); \t \t listView.setOnItemClickListener (новый OnItemClickListener() { \t \t \t @Override \t \t \t общественный недействительный onItemClick (AdapterView родитель, Вид вид, внутр позиция, длинный идентификатор) { \t \t \t \t \t \t \t \t \t \t \t} \t}); , но теперь я застрял, как извлекать предметы там. На самом деле я не понимал, как это работает. – Kris

ответ

9

Чтобы получить свой perticular данных-

Implement setOnItemClickListener() -

и position вернет номер позиции элемента списка: -

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
     String yourData = temparr.get(position); 
    } 
}); 
+0

показывая элементы, которые я хочу отобразить на экране, а не в тосте, можно ли изменить приведенный выше код, показывающий реализацию? – Kris

+0

Если вы хотите, чтобы ваши данные отображались на другом экране, вам нужно создать новое действие. Тогда передайте свои данные, бросив намерение. –

2

Просто позвоните listView.setOnItemClickListener() с вашей реализацией слушателя.

+0

Я сделал это. Но так как я новичок в программировании для Android. И я не понимаю, как это работает. Не могли бы вы это объяснить? – Kris

+0

Что именно вы не понимаете? Что вам нужно объяснить? – flx

+0

вот первый пример google для меня: http://www.ezzylearning.com/tutorial.aspx?tid = 1351248 – flx

0
listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
     // your code 
     // Toast.makeText(context,temparr.get(position),Toast.LENGTH_SHORT).show(); 
    } 
}); 

parent -> AdapterView, где произошел щелчок.

вида -> Вид в AdapterView, которая была нажата (это будет вид предоставляемого адаптера)

положения -> Положение точки зрения в адаптере.

id-> Идентификатор строки элемента, который был нажат.

0

Вы можете установить слушателя, как это:

Положить этот код в onCreate()

TextView disp = (TextView) findViewById(R.id.textView1); 

listView.setOnItemClickListener(new OnItemClickListener() { 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       String temp = (String) listView.getItemAtPosition(position); 
       disp.setText(temp);// display on screen 
    } 
}); 

EDIT:

Как вы хотите, чтобы отобразить ListItem на экране в вас устраивают своего рода путь, а не отображает тост, самый простой способ, что вы можете сделать это путем добавления TextView в ваш макет. См. Обновленный код

Надеюсь, что это поможет.

+0

на самом деле это помогает. При отображении элементов, которые я хочу отображать на экране, а не в тосте, можете ли вы редактировать приведенный выше код, показывающий реализацию? – Kris

+0

См. Обновленный ответ. Если он решает вашу проблему, примите его –

+0

Это работает. Но проблема в том, что текст перекрывается с существующим текстом. Я хочу отобразить результат на другом экране. – Kris

Смежные вопросы