您好,登錄后才能下訂單哦!
相信大部分人對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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。