2013-05-31 1 views
2

Предположим, что у меня есть ListView с некоторыми элементами. Я хочу сделать это, когда пользователь нажимает на элемент, приложение выдает Toast, содержащий имя элемента. Например, когда пользователь нажимает «Apple», им вручают тосты: «Вы ели Apple». Как я могу это сделать?Android ListView - как реагировать на клики?

ответ

0

вы можете установить Пункт Нажмите Слушатель на List View т.е.

listvw=(ListView)findViewById(R.id.listviewid); 

listvw.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { 

      Toast.makeText(ActivityName.this, "Text message", Toast.LENGTH_SHORT).show(); 

     } 
    }); 
+0

То же самое здесь. Как получить имя нажатого элемента? – Arielle

+0

У вас есть вид вашего элемента списка. просто найдите текст вида, т. е. TextView text = (TextView) view.findViewById (R.id.text_viewId); ' ' Toast.makeText (ActivityName.this, text.getText(), Toast.LENGTH_SHORT) .show(); ' –

+0

ОК спасибо. Я использовал TextView text = (TextView) arg1.findViewById (arg1.getId()); Toast.makeText (getApplicationContext(), text.getText(), Toast.LENGTH.SHORT) .show(); ' – Arielle

0

использовать как этот

ActivityListView .java

package com.sunil; 

    import android.app.ListActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 
    import android.widget.Toast; 

    public class ActivityListView extends ListActivity { 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Create an array of Strings, that will be put to our ListActivity 
    String[] namesArray = new String[] { "Linux", "Windows7", "Eclipse", 
     "Suse", "Ubuntu", "Solaris", "Android", "iPhone" }; 

    /* Create an ArrayAdapter, that will actually make the Strings above 
     appear in the ListView */ 

    this.setListAdapter(new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_1, namesArray)); 
    } 
     @Override 
     protected void onListItemClick(ListView l, View v, 
     int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    // Get the item that was clicked 

    Object o = this.getListAdapter().getItem(position); 
    String keyword = o.toString(); 
    Toast.makeText(this, "You selected: " + keyword, 
     Toast.LENGTH_SHORT).show(); 
    } 
    } 

main.xml

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout 

    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:orientation="vertical" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent"> 

    <TextView 

     android:layout_width="fill_parent" 

     android:layout_height="wrap_content" 

     android:text="@string/hello" /> 

    </LinearLayout> 
+0

Я получаю 'java.lang.RuntimeException: ваш контент должен иметь ListView с атрибутом id 'android.R.id.list''. Может быть, давайте расширим стандартный класс 'Activity', а не' ListActivity'? – Arielle

+0

такой же код работает на моем устройстве. Не продлевает действие, а также также setcontentview. Он снова будет нормально проверяться –

+0

Возможно, это устройство несовместимо с этим кодом? – Arielle

0

Попробуйте это код listview = (ListView) findViewById (R.id.listid);

listview.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int pos,long arg3) { 

     // to set your list item or name 

     //here list is your list that you set in your adapter  
      list.get(pos); 

    } 
}); 
Смежные вопросы