您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
相信大部分人对View.setTag()方法不太在意,但是在实际的开发中,对系统软件的优化中,这个是非常重要的一个方法。setTag()方法可以为不同,可以将一些数据存放到View当中。放出一个例子大家体会一下。
重写BaseAdapter的getView()方法:
package com.example.multialbum; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalp_w_picpathloader.core.ImageLoader; public class AlbumListViewAdapter extends BaseAdapter { protected ImageLoader p_w_picpathLoader = ImageLoader.getInstance(); private LayoutInflater mInflater; private List<Album> mAlbums; private Context context; private String TAG = AlbumListViewAdapter.class.getSimpleName(); /** * 列表项目View持有者 * */ public class ViewHolder { ImageView mAlbumCover; TextView mAlbumName; TextView mAlbumNum; } /** * 适配器构造器 * * @param ctx * Context 上下文 */ public AlbumListViewAdapter(Context ctx) { this.context = ctx; mAlbums = new ArrayList<Album>(0); mInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } /** * 设置新的相册数据 */ public void setAlbumsList(List<Album> albums) { mAlbums.clear(); mAlbums.addAll(albums); notifyDataSetChanged();// 通知刷新listView。 } /** * */ public void addAlbums(List<Album> albums) { mAlbums.addAll(albums); notifyDataSetChanged(); } @Override public int getCount() { return mAlbums.size(); } /** * 清除所有项目。 */ public void clear() { mAlbums.clear(); } @Override public Object getItem(int position) { if (mAlbums.isEmpty() || position >= mAlbums.size()) { return null; } return mAlbums.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View view, ViewGroup viewGroup) { ViewHolder holder; if (view == null) { view = mInflater.inflate(R.layout.album_list_item, null); holder = new ViewHolder(); // 获取到资源 holder.mAlbumCover = (ImageView) view .findViewById(R.id.album_cover); holder.mAlbumName = (TextView) view .findViewById(R.id.album_name); holder.mAlbumNum = (TextView) view .findViewById(R.id.album_num); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } Log.d(TAG, String.format(" poistion = %d", position)); Album album = mAlbums.get(position); holder.mAlbumName.setText(album.mName); holder.mAlbumNum.setText(album.mNum); p_w_picpathLoader.displayImage("file://" + album.mCoverUrl, holder.mAlbumCover, Constants.p_w_picpath_display_options, new Util.AnimateFirstDisplayListener()); return view; } }
除此之外,setTag()可以为View添加标记,通过getTag()方法取得标记。可以根据标记来判断是不是原来的特定View
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。