2014-01-14 4 views
-3

У меня есть база данных (db), из которой я получаю значения (имя, адрес электронной почты, номер телефона и т. Д.), Которые я помещал в список и отображал в ListView. Если я нажму на элемент, могу ли я получить данные из всего элемента? Потому что мне нужно. адрес электронной почты для отправки электронной почты. Могу ли я извлечь из элемента данные, потому что, когда данные из базы данных находятся в типе «Клиент».Получить данные из списка? Как?

List list = db.getAllClients(); 

    final ListView listview = (ListView) findViewById(R.id.listView_ID); 
    listview.setClickable(true); 

    ArrayAdapter adapter = new ArrayAdapter(this, 
      android.R.layout.simple_list_item_1, list); 

    listview.setAdapter(adapter); 
    registerForContextMenu(listview); 

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

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

          // some code 


     } 
    }); 
+0

http://stackoverflow.com/questions/16259960/get-data-from-listview-when-clicking-listviews-child Этот ответ может помочь –

+0

Это немного неясно, что вы собираетесь делать: при нажатии кнопки строка, что вам нужно? получить только почту? получить все данные? что вы хотите с этим делать? показать контекстменю? выполнить действие ...? – nKn

+0

На длинном клике появляется контекстное меню с опциями «Вызов», «Отправлять электронную почту на выбранный элемент», и мне нужно отправить электронную почту ex клиенту в выбранный элемент ListView, но мне нужны эти данные (почтовый адрес, номер телефона и т. Д.). Как я могу вызвать эти данные? – user3190360

ответ

1

Вы не знаете, t необходимо извлечь ваши данные из вашего ListView как такового, только Array, который вы использовали для заполнения вашего списка.

С onItemClick(...) дает position из щелкнутого пункта, вы можете ...

  • ArrayAdapter Используйте, чтобы получить деталь:

    adapter.getItem(position)

  • Получить данные из ваш первоначальный список:

    list.get(position)

В любом из этих случаев, поскольку вы извлекаете данные из анонимного внутреннего класса (ваш OnItemClickListener), то adapter или list в вопросе должен быть переменной экземпляра, а не локальная переменной (т.е. определите adapter или list как часть вашего класса, прежде всего ваших методов).

0

Вы можете получить данные из ArrayAdapter положения в вашем AdapterView.OnItemClickListener:

((ArrayAdapter) listview.getAdapter()).getItem(position); 
0

Как я могу увидеть код, вы получите список объектов List<Client> так

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

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

         Client client = list.get(position) ; 


    } 
}); 

, потому что позиция обратитесь к выбранному индексу вашего списка

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