Reputation: 8981
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
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
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