Setting Tag For Listview Item When Using Simpleadapter
Solution 1:
Without overriding at least getView()
, you will have trouble setting tags with every Adapter's view recycler.
However you can simply pass a custom layout with a TextView that has its visibility set to GONE
or INVISIBLE
and bind data from your List of Maps (List<Map<String, ?>>
). Later you can easily fetch this TextView in an OnItemClickListener.
Solution 2:
i think this will help you in case you want to identify imageview uniquely by tag like this
//add this in your getview() methodImageViewimageView=newImageView(_context);
imageView.setTag(1);
and then on listview's/imageView's click check its tag like this
listview.setOnItemClickListener(newOnItemClickListener() {
@OverridepublicvoidonItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Tag = (Integer) arg1.getTag();
} }
Solution 3:
There is a method inside SimpleAdapter for that. It's called ViewBinder. Try to include this code immediately after “SimpleAdapter adapter = new SimpleAdapter(this, Maps, R.layout.search, from, to);” and before “setListAdapter(adapter);” (Inside your onCreate Method).
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
//...String[] from = newString[] {"ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN"};
int[] to = new int[] { R.id.textView_1, R.id.textView_2, R.id.textView_3, R.id.textView_4, R.id.textView_5, R.id.textView_6, R.id.textView_7};
SimpleAdapter adapter = newSimpleAdapter(this, Maps, R.layout.search, from, to);
SimpleAdapter.ViewBinder binder = newSimpleAdapter.ViewBinder() {
@OverridepublicbooleansetViewValue(View view, Objectobject, String value) {
System.out.println("view= "+view);
System.out.println("view.toString()= "+ view.toString());
System.out.println("view.getId()= "+ view.getId()); //The return value will be decimal (not hexadecimal). You can have this value as a global string for later use.System.out.println("view.getVisibility()= "+ view.getVisibility());
System.out.println("view.equals((TextView) view.findViewById(R.id. textView_5))= "+ view.equals((TextView) view.findViewById(R.id.textView_5)));
if (view.equals((TextView) view.findViewById(R.id.textView_5)))
{
TextView textView_five = (TextView) view.findViewById(R.id. textView_5);
//Change color/answer/etc for textView_5
}
//ORif (view instanceofTextView) {
//Do stuffreturntrue;
}
returnfalse;
}
};
adapter.setViewBinder(binder);
setListAdapter(adapter);
}//End of onCreate
setViewValue method will be called for each R.id.textView_1, R.id.textView_2, R.id.textView_3, R.id.textView_4, R.id.textView_5, R.id.textView_6, R.id.textView_7 that you have in “adapter”. The setViewValue method will be called each View/each time one of the above R.id’s is being drawn.
Then, when the user clicks on one of the ListView items and u want to change it, override onListItemClick Method.
@OverridepublicvoidonListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if (v.equals((TextView) v.findViewById(R.id.textView_5)))
{
TextViewtextView_five= (TextView) v.findViewById(R.id. textView_5);
textView_five.setText(“stuff”);
//Change color/answer/etc for textView_5
}
}
Post a Comment for "Setting Tag For Listview Item When Using Simpleadapter"