2014-01-29 5 views
1

Я разрабатываю приложение для Android, и я застрял посередине.Как обрабатывать подэлементы Android ListView Щелкните события, используя SimpleAdapter?

Проблема заключается в том, я использую SimpleAdapter сделать адаптер вещь и показать элементы в Listview и, насколько я знаю, я не могу override метод getView() из SimpleAdapter класса связаны клик слушателей к пунктам.

Существует другой способ обработки событий щелчка подэлементов, таких как использование XML, вы можете писать в XML как android:clickable="true" и android:onClick="clicklistenr", используя это, я могу получить элемент, но моя проблема в том, что если я использую это, то я не могу получить положение адаптера, в котором мне нужно получить значения элементов адаптера и выполнять другие задачи. Поэтому я застрял здесь, любая помощь будет заметна. Благодарю.

Например у меня есть ListView, который содержит один image, TextView, как Button, доля Button в каждой из его элементов. И я не могу найти, что либо его изображение, либо кнопка нажали, используя setOnItemClickListener. Так что мне нужен способ обработки событий щелчка этих подпунктов ListView, я использую SimpleAdapter.

ответ

0

Вы можете использовать как

myListView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     HashMap<String, Object> obj = (HashMap<String, Object>) adapter.getItem(position); 
      String result= (String) obj.get("name"); 
      Log.d("Yourtag", name); 
    } 
}); 
+0

я могу сделать это, сэр, но как я могу получить подпункты этого представления? Я хочу обрабатывать события подэлементов представления, а не основной элемент класса LitView. –

+0

: http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/ –

+0

http: // theopentutorials.com/tutorials/android/listview/android-expandable-list-view-example/ –

0

Прежде всего, ваша проблема в том, как обрабатывать пункты пользовательского ListView .. не к югу. Anyways ...

Если вы используете SimpleAdapter, вы можете использовать getView(). Но если вы используете SimpleAdapter, вам не нужно использовать getView(), поскольку он обрабатывает сопоставление данных с вашим макетом через ресурс , Для проверки информации отметьте SimpleAdapter на сайте разработчика.

Другое дело, что для использования какого-либо конкретного адаптера необязательно. Вы можете создать любой класс адаптера, который будет расширять BaseAdapter, который будет реализовывать getView().

Внутри getView() вы можете в состоянии надуть пользовательский макет (который содержит изображения, кнопки и т.д ..) на ваш взгляд или convertview.something как:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    vi = convertView; 
    if (convertView == null) 
     vi = inflater.inflate(R.layout.yourcustomlayout, null); 

      //Initialize your custom views here 
      TextView someText= (TextView) vi.findViewById(R.id.tvSometext); 
      Button likeButton = (Button) vi.findViewById(R.id.btnLike); 

      //put data or call onclicklistener or 
      //whatever you want to do with custom views 
      likeButton .setOnClickListener(...){ 
      //on click 
      } 
     } 

Ans просто называют это через конструктор с некоторыми данных и соответствующего контекста.

+0

Я знаю это сэр, и я уже упомянул об этом в своем вопросе, мне нужен способ обработки событий, связанных с элементами, используя SimpleAdapter. Как и в SimpleAdapter, я не могу вызвать метод getView() для этого. спасибо за ваш ответ, но это не то, что мне нужно. –

1

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

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

list.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView&lt;?&gt; parent, View view, 
        int position, long id) { 

      } 
     }); 

Где list=(ListView)findViewById(R.id.list); и list.setAdapter(your_adapter);

Для более подробной информации Следовать: http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/

Надежда это поможет вам .. :)

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