Skip to content Skip to sidebar Skip to footer

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 = new CustomViewHolder();
        convertView .setTag(holder );
    }
    else {

        holder= (CustomViewHolder ) convertView.getTag();
    }

        holder.textview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final int position = 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 :

static class ViewHolder {
  public TextView textview;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
   View rowView = convertView;

   // reuse views
  if (rowView == null) {
       LayoutInflater inflater = context.getLayoutInflater();
       rowView = inflater.inflate(R.layout.listitem, null);
       // configure view holder
       ViewHolder viewHolder = new ViewHolder();
       viewHolder.textview= (TextView) rowView.findViewById(R.id.textview);
       rowView.setTag(viewHolder);
  }
  else {

      ViewHolder holder = (ViewHolder) rowView.getTag();
  }

   // fill data
   holder.textview.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final int position = 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"