相信大部分人對View.setTag()方法不太在意,但是在實際的開發(fā)中,對系統(tǒng)軟件的優(yōu)化中,這個是非常重要的一個方法。setTag()方法可以為不同,可以將一些數(shù)據(jù)存放到View當中。放出一個例子大家體會一下。
金臺網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
重寫B(tài)aseAdapter的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 ListmAlbums; private Context context; private String TAG = AlbumListViewAdapter.class.getSimpleName(); /** * 列表項目View持有者 * */ public class ViewHolder { ImageView mAlbumCover; TextView mAlbumName; TextView mAlbumNum; } /** * 適配器構(gòu)造器 * * @param ctx * Context 上下文 */ public AlbumListViewAdapter(Context ctx) { this.context = ctx; mAlbums = new ArrayList (0); mInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } /** * 設(shè)置新的相冊數(shù)據(jù) */ public void setAlbumsList(List albums) { mAlbums.clear(); mAlbums.addAll(albums); notifyDataSetChanged();// 通知刷新listView。 } /** * */ public void addAlbums(List 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()方法取得標記。可以根據(jù)標記來判斷是不是原來的特定View