Bolic
Bolic

Reputation: 745

onItemClick() method. how to implement right?

i have a problem by implementing the onItemClick() method right. But i do not know how to formulate my question in english to find something at google ^^

Problem:

i have a listview. This listview ist filled with somehting like taks. Any task activates another action. I could use the valueposition, but the tasks are often chaging, so that the position is not the right identifyer. I need something like a tag?

list.setOnItemClickListener(new OnItemClickListener(){

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


            }

        });

The Adapter:

    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;
    }



}

Upvotes: 0

Views: 375

Answers (1)

antonv
antonv

Reputation: 1225

You can use Adapter.getItem() that will return your custom object.

list.setOnItemClickListener(new OnItemClickListener(){

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

        }

    });

Upvotes: 1

Related Questions