无意中注意到了view.setTag(Object tag)方法.
Tag在View中是很有作用的属性,API中这样描述的:
Unlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information that can be associated with a view. They are most often used as a convenience to store data related to views in the views themselves rather than by putting them in a separate structure.
Tag不像ID是用标示view的。Tag从本质上来讲是就是相关联的view的额外的信息。它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结构。
其实,我们在优化listview的getView()方法中就用到了setTag()和getTag()。
摘取代码段如下:
ViewHolder viewHolder; if (convertView == null) { convertView = LayoutInflater.from(SongsActivity.this).inflate( R.layout.music_item, null); ImageView pImageView = (ImageView) convertView .findViewById(R.id.albumPhoto); viewHolder = new ViewHolder(pImageView, pTitle, pDuration, pArtist); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); }
setTag还有带2个参数的形式,setTag(key, tag),暂时不做讨论。
相关推荐
在Android开发中,`setTag()` 是一个非常实用的方法,它允许开发者在 `View` 对象中存储自定义的数据,这对于优化性能和传递参数有着重要的作用。本文将深入探讨 `setTag()` 的使用方法,以及如何解决 "The key must...
首先,`Tag`的基本用法是在创建或者获取View时通过`setTag()`和`getTag()`方法进行设置和读取。例如,你可能在一个ListView中,为每个列表项设置一个唯一的`Tag`,这样在点击事件处理中,可以通过`getTag()`快速获取...
setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息,在很多场合下都得到妙用。 示例代码: view.setTag(R.string.action_settings,hodler.content); 接收两个值,一个是key值,必须是唯一...
接下来,我们可以在Adapter中利用View的`setTag()`和`getTag()`方法来存储和检索每个条目的选中状态。`setTag()`可以将任何对象绑定到View,而`getTag()`则用来获取之前设置的对象。例如,我们可以在`getView()`方法...
view.setTag(object); ``` 而 `getTag()` 方法则用于获取之前设置的Tag对象。如果Tag未被设置,它将返回null。这使得我们可以在需要的时候方便地取出之前存储的数据。其基本语法如下: ```java Object tag = view....
view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } viewHolder.radioButton.setId(position); viewHolder.radioButton.setOnCheckedChangeListener(null); // 防止重复点击事件...
view.setTag(viewHolder); } else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.title = (TextView) view.findViewById(R.id.tv_title); viewHolder.time = ...
view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } viewHolder.radioButton.setText(dataList.get(position)); viewHolder.radioButton.setOnCheckedChangeListener(null); // ...
buttonView.setTag(position); ``` 通过以上步骤,你可以确保ListView中的Checkbox状态在滚动时能够正确地保存和恢复,从而解决乱序问题。在实际开发中,还可以考虑使用RecyclerView替代ListView,因为它提供了更...
public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R....
在代码中,可以通过`View.getTag()`和`View.setTag()`方法来获取和设置标签。例如: ```java Button myButton = findViewById(R.id.my_button); String tag = (String) myButton.getTag(); // 获取标签 ...
关于标签(Tag)的使用,Android中的`View.setTag()`和`View.getTag()`方法常用于存储与视图相关的数据,可以提高代码的可读性和复用性。在FlowLayout中,我们可能用标签来标识某子视图的特殊状态或属性。 在压缩包...
buttonView.setTag(position); return convertView; } static class ViewHolder { TextView textViewTitle; Switch switchButton; } } ``` 4. 在Activity中设置ListView和Adapter: 在主活动中初始化...
view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } viewHolder.image.setImageResource(dataList.get(position).getImageRes()); viewHolder.text.setText(dataList.get...
可以使用View.setTag()和View.getTag()来标识和恢复焦点,或者利用View.OnFocusChangeListener监听焦点变化,手动将焦点设置回当前可见的EditText。 其次,数据保存是另一个关键问题。由于ListView的复用机制,如果...
view.setTag(viewHolder); // 设置触摸监听器 view.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // 检测滑动手势 switch (event.get...
view.setTag(views); return view; } ``` - **作用**:创建一个新的视图,用于展示联系人的信息。 - **参数**: - `context`:上下文对象。 - `cursor`:当前数据集的Cursor对象。 - `parent`:视图将被添加到...
1. **对于View对象**,可以使用`setTag()`方法设置Tag,传入一个Object类型的参数,如`view.setTag("myTag")`。获取Tag时,使用`getTag()`,如果Tag是自定义的对象类型,需要提供一个泛型参数,如`(String)view....
通过`View.setTag()`和`View.getTag()`来传递和获取每个单元格的数据,以便在点击事件中根据数据执行相应的操作。 6. **动画效果**: 为了提升用户体验,可以在用户触摸宫格单元时添加一些过渡动画,如放大、淡入...