Clickable Element In Custom Listview Row
I have created a ListView with custom rows, and within each custom row I would like a particular TextView to be clickable. In the getView method of my custom adapter, I have set an
Solution 1:
getView(int position, View convertView, ViewGroup parent) {
final CustomViewHolder holder;
if (convertView == null) {
rowView = inflater.inflate(R.layout.listitem, parent, false);
holder = newCustomViewHolder();
convertView .setTag(holder );
}
else {
holder= (CustomViewHolder ) convertView.getTag();
}
holder.textview.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View v) {
finalintposition= listView.getPositionForView(v);
//position is always -1 after configuration change
Log.d(TAG, "Like button pushed at position: " + position);
}
});
}
//fill list item with data
}
return convertView;
}
Solution 2:
Your getView() is a bit strange. The field textview
of your holder is never initialized ?
The usefulness of the holder is to limit the use of the method findViewById
.
Here is the skeleton that I would have used :
staticclassViewHolder {
public TextView textview;
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
ViewrowView= convertView;
// reuse viewsif (rowView == null) {
LayoutInflaterinflater= context.getLayoutInflater();
rowView = inflater.inflate(R.layout.listitem, null);
// configure view holderViewHolderviewHolder=newViewHolder();
viewHolder.textview= (TextView) rowView.findViewById(R.id.textview);
rowView.setTag(viewHolder);
}
else {
ViewHolderholder= (ViewHolder) rowView.getTag();
}
// fill data
holder.textview.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View v) {
finalintposition= listView.getPositionForView(v);
//position is always -1 after configuration change
Log.d(TAG, "Like button pushed at position: " + position);
}
});
return rowView;
}
}
Hopefully it solve your problem !
have a nice day !
Post a Comment for "Clickable Element In Custom Listview Row"