Tobias Moe Thorstensen
Tobias Moe Thorstensen

Reputation: 8981

Getting object out of a ListView with a CustomAdapter android

I've got a custom Adapter like this:

public class DeviceAdapter extends BaseAdapter {

private static ArrayList<Device> availableDevices;
Context c;
private LayoutInflater mInflater;

/**
 * Constructor for this class
 * @param context Which context triggered this class
 * @param devices Object of each devices
 */
public DeviceAdapter(Context context, ArrayList<Device> devices) {
    this.availableDevices = devices; 
    this.c = context; 
    mInflater = LayoutInflater.from(c);
}


public int getCount() {
    return availableDevices.size();
}


public Object getItem(int position) {
    return availableDevices.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.device_list, null);
        holder = new ViewHolder();
        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.address = (TextView) convertView.findViewById(R.id.address);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.name.setText("Device name: "+availableDevices.get(position).getName());
    holder.address.setText("Mac-address: "+ availableDevices.get(position).getAddress());


    return convertView;
}


static class ViewHolder {
    TextView name;
    TextView address;

}

}

My question is: How can I access an objects variable name where the user presses?

Upvotes: 0

Views: 276

Answers (2)

Dheeresh Singh
Dheeresh Singh

Reputation: 15701

use onItemClickListenerwith list http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html

ist.setOnItemClickListener(new AdapterView.onItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
      Object listItem = list.getItemAtPosition(position);

     or
     TextView tv =    (TextView) view.findViewById(R.id.name);
         name = tv.getText(); 

   } 
});

Upvotes: 2

Chintan Raghwani
Chintan Raghwani

Reputation: 3370

You can get OnClick event for only name TextView click, by adding holder.name.setOnClickListener....... See followin code

public class DeviceAdapter extends BaseAdapter {

private static ArrayList<Device> availableDevices;
Context c;
private LayoutInflater mInflater;

/**
 * Constructor for this class
 * @param context Which context triggered this class
 * @param devices Object of each devices
 */
public DeviceAdapter(Context context, ArrayList<Device> devices) {
    this.availableDevices = devices; 
    this.c = context; 
    mInflater = LayoutInflater.from(c);
}


public int getCount() {
    return availableDevices.size();
}


public Object getItem(int position) {
    return availableDevices.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.device_list, null);
        holder = new ViewHolder();
        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.address = (TextView) convertView.findViewById(R.id.address);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.name.setText("Device name: "+availableDevices.get(position).getName());
    holder.address.setText("Mac-address: "+ availableDevices.get(position).getAddress());

    //   PUT FOLLOWIN   ------------------
    holder.name.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    put your dezired code here which runs OnClick of TextView NAME
                }
            });
    //         -----------------

    return convertView;
}


static class ViewHolder {
    TextView name;
    TextView address;

}

}

Upvotes: 0

Related Questions