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 = 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"