Monday, 15 April 2019

android - What is the main purpose of setTag() getTag() methods of View?



What is the main purpose of such methods as setTag() and getTag() of View type objects?



Am I right in thinking that I can associate any number of objects with a single View?



Answer



Let's say you generate a bunch of views that are similar. You could set an OnClickListener for each view individually:



button1.setOnClickListener(new OnClickListener ... );
button2.setOnClickListener(new OnClickListener ... );
...


Then you have to create a unique onClick method for each view even if they do the similar things, like:




public void onClick(View v) {
doAction(1); // 1 for button1, 2 for button2, etc.
}


This is because onClick has only one parameter, a View, and it has to get other information from instance variables or final local variables in enclosing scopes. What we really want is to get information from the views themselves.



Enter getTag/setTag:



button1.setTag(1);

button2.setTag(2);


Now we can use the same OnClickListener for every button:



listener = new OnClickListener() {
@Override
public void onClick(View v) {
doAction(v.getTag());
}

};


It's basically a way for views to have memories.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...