How to use setTag and getTag with custom adapter How to use setTag and getTag with custom adapter android android

How to use setTag and getTag with custom adapter


your code is little bit confusing, so I give you a sample

Sample Tag class

public class MyTag{   String  code;   String  image;   String  web_ref;  public MyTag()    {     code=null;     image=null;     web_ref=null;    }    public MyTag(String cod,String img,String wref)    {      code=cod;      image=img;      web_ref=wref;    }}

you want to get this values when clicked on button right ? So put this tag class object as tag on button in getView of your custom adapter

MyTag myTag=new MyTag("code","image","web_ref");holder.button.setTag(myTag);

since you get the view clicked as argument to the your function

public void shareOnClickHandler(View v) {   myTag=(MyTag)v.getTag();   text=myTag.code;   image2.loadUrl("http://"+myTag.image);//..... I'm not sure, thank you   webview.loadUrl(mytag.web_ref);}

I think you get the idea, try to implement your code with this idea


You are very close to your answer. Just Follow the changes and complete your answer

@Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder;        if ((convertView == null) || (convertView.getTag() == null)) {            LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);            convertView = mInflater.inflate(R.layout.list_item, null);            holder = new ViewHolder();        } else {            holder = (ViewHolder) convertView.getTag();        }        convertView.setTag(holder);        return convertView;    }


Answer 1:

What you want to do it:

above or right after this line: holder.code.setText(storeItem.getCode()); add the following: holder.share.setTag(storeItem.getCode());

and in the onClick:

public void shareOnClickHandler(View v) {    String code = v.getTag().toString();    // plz here i need the code to get the text from textview and also get the     // reference of the webview, so i can do something like    // StoreDataForBA data = (StoreDataForBA)v.getTag();    // image2.loadUrl("http://image2")..... I'm not sure, thank you}

Or

Answer 2:

You may not need to use setTag and getTag if you do the following

  1. Go to your xml and remove the onclick attribute from the button we are going to use it in the Java instead
  2. Use the following getView

    @Overridepublic View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null;

    LayoutInflater mInflater = (LayoutInflater)     context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);if (convertView == null) {    convertView = mInflater.inflate(R.layout.itemstartsession, null);    holder = new ViewHolder();    holder.image = (WebView)convertView.findViewById(R.id.img_session);    holder.code = (TextView)convertView.findViewById(R.id.code_item_session_text);                      holder.share=(ImageButton)convertView.findViewById(R.id.share_item_session_button);    convertView.setTag(holder);// Check if my setTag is ok for button and get the reference to get     //text from textview and the reference to webview, then I gonna load a url} else {    holder=(ViewHolder)convertView.getTag();}final StoreDataForBA storeItem= (StoreDataForBA) getItem(position); // final to use inside clickholder.image.loadUrl(storeItem.getImage());holder.code.setText(storeItem.getCode());final ViewHolder fh = holder; // it needs to be final to use inside of clicklistenerholder.share.setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {        String text = holder.code.getText().toString(); // I hope that this is what you need.        String text2 = storeItem.getCode(); //use either but I prefer this.    }});return convertView;}