2013-07-27 3 views
0

У меня проблема с реализацией метода onItemClick(). Но я не знаю, как сформулировать свой вопрос на английском языке, чтобы найти что-то на Google ^^onItemClick() способ. как реализовать право?

Проблема:

У меня есть ListView. Этот список имеет заполненную форму как taks. Любая задача активирует другое действие. Я мог бы использовать значение position, но задачи часто выполняются, так что position не является правильным идентификатором. Мне нужно что-то вроде тега?

list.setOnItemClickListener(new OnItemClickListener(){ 

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


      } 

     }); 

Адаптер:

import java.util.ArrayList; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 
import de.sebspr.app08.R; 

public class HalleAdapter extends BaseAdapter { 

    private LayoutInflater layoutInflater; 
    private ArrayList<ItemHalle> listItem; 

    public HalleAdapter(Context context, ArrayList<ItemHalle> listItem){ 
     this.listItem = listItem; 
     layoutInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public int getCount() { 
     return listItem.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return listItem.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if(convertView == null){ 
      convertView = layoutInflater.inflate(R.layout.halle_item, null); 
      holder = new ViewHolder(); 
      holder.center = (TextView) convertView.findViewById(R.id.halletxt1); 
      holder.right = (TextView) convertView.findViewById(R.id.halletxt2); 
      holder.image = (ImageView) convertView.findViewById(R.id.halleimage); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.center.setText(listItem.get(position).getCenter()); 
     holder.right.setText(listItem.get(position).getRight() 
       +de.sebspr.app08.MainActivity.getMContext() 
       .getResources().getString(R.string.geldZeichen)); 
     holder.image.setImageDrawable(listItem.get(position).getIcon()); 

     return convertView; 
    } 

    static class ViewHolder{ 
     TextView center; 
     TextView right; 
     ImageView image; 
    } 



} 
+0

В качестве идентификатора вы можете использовать 'position' или' id'. Если вы реализуете свой собственный ListAdapter, убедитесь, что вы предоставили правильный идентификатор с помощью метода 'Adapter.getItemId()' – Antonio

+0

Не могли бы вы также показать нам свой адаптер? –

+0

Да, я использую собственный listAdapter. Но как узнать, какой идентификатор принадлежит какой задаче? Задачи не всегда в одном порядке. Я отредактировал сообщение выше и добавил код адаптера – Bolic

ответ

1

Вы можете использовать Adapter.getItem(), который возвращает пользовательский объект.

list.setOnItemClickListener(new OnItemClickListener(){ 

     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, 
       long id) { 
      ItemHalle item = (ItemHalle)adapterView.getAdapter().getItem(pos); 

     } 

    }); 
+0

Спасибо. Это работает;) – Bolic

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