最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開(kāi)發(fā)中總結(jié)的Adapter工具類【附完整源碼下載】

 更新時(shí)間:2017年11月23日 11:34:46   作者:紫寒天  
這篇文章主要介紹了Android開(kāi)發(fā)中總結(jié)的Adapter工具類,簡(jiǎn)單說(shuō)明了Adapter的功能,并結(jié)合實(shí)例形式分析了Adapter工具類的相關(guān)使用方法,并附帶完整源碼供讀者下載參考,需要的朋友可以參考下

本文實(shí)例講述了Android開(kāi)發(fā)中總結(jié)的Adapter工具類。分享給大家供大家參考,具體如下:

Adapter是連接后端數(shù)據(jù)和前端顯示的適配器接口,是數(shù)據(jù)和UI(View)之間一個(gè)重要的紐帶。在常見(jiàn)的View(ListView,GridView)等地方都需要用到Adapter。

每個(gè)開(kāi)發(fā)工程師都會(huì)有自己的一些常用到的工具類,今天我分享一下我自己總結(jié)的關(guān)于Adapter的工具類,話不多說(shuō)直接上代碼

CommonAdapter:

public abstract class CommonAdapter<T> extends BaseAdapter
{
  protected LayoutInflater mInflater;
  protected Context mContext;
  protected List<T> mDatas;
  protected final int mItemLayoutId;
  public CommonAdapter(Context context, List<T> mDatas, int itemLayoutId)
  {
    this.mContext = context;
    this.mInflater = LayoutInflater.from(mContext);
    this.mDatas = mDatas;
    this.mItemLayoutId = itemLayoutId;
  }
  @Override
  public int getCount()
  {
    return mDatas.size();
  }
  @Override
  public T getItem(int position)
  {
    return mDatas.get(position);
  }
  @Override
  public long getItemId(int position)
  {
    return position;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent)
  {
    final ViewHolder viewHolder = getViewHolder(position, convertView,
        parent);
    convert(viewHolder, getItem(position) , position);
    return viewHolder.getConvertView();
  }
  public abstract void convert(ViewHolder helper, T item , int postion);
  private ViewHolder getViewHolder(int position, View convertView,
      ViewGroup parent)
  {
    return ViewHolder.get(mContext, convertView, parent, mItemLayoutId,
        position);
  }
}

ViewHolder:

public class ViewHolder
{
  private final SparseArray<View> mViews;
  private int mPosition;
  private View mConvertView;
  private ViewHolder(Context context, ViewGroup parent, int layoutId,
      int position)
  {
    this.mPosition = position;
    this.mViews = new SparseArray<View>();
    mConvertView = LayoutInflater.from(context).inflate(layoutId, parent,
        false);
    // setTag
    mConvertView.setTag(this);
  }
  /**
   * 拿到ViewHolder對(duì)象
   *
   * @param context
   * @param convertView
   * @param parent
   * @param layoutId
   * @param position
   * @return
   */
  public static ViewHolder get(Context context, View convertView,
      ViewGroup parent, int layoutId, int position)
  {
    ViewHolder holder = null;
    if (convertView == null)
    {
      holder = new ViewHolder(context, parent, layoutId, position);
    } else
    {
      holder = (ViewHolder) convertView.getTag();
      holder.mPosition = position;
    }
    return holder;
  }
  public View getConvertView()
  {
    return mConvertView;
  }
  /**
   * 通過(guò)控件的Id獲取對(duì)于的控件,如果沒(méi)有則加入views
   *
   * @param viewId
   * @return
   */
  public <T extends View> T getView(int viewId)
  {
    View view = mViews.get(viewId);
    if (view == null)
    {
      view = mConvertView.findViewById(viewId);
      mViews.put(viewId, view);
    }
    return (T) view;
  }
  /**
   * 為T(mén)extView設(shè)置字符串
   *
   * @param viewId
   * @param text
   * @return
   */
  public ViewHolder setText(int viewId, String text)
  {
    TextView view = getView(viewId);
    view.setText(text);
    return this;
  }
  /**
   * 為ImageView設(shè)置圖片
   *
   * @param viewId
   * @param drawableId
   * @return
   */
  public ViewHolder setImageResource(int viewId, int drawableId)
  {
    ImageView view = getView(viewId);
    view.setImageResource(drawableId);
    return this;
  }
  /**
   * 為ImageView設(shè)置圖片
   *
   * @param viewId
   * @param drawableId
   * @return
   */
  public ViewHolder setImageBitmap(int viewId, Bitmap bm)
  {
    ImageView view = getView(viewId);
    view.setImageBitmap(bm);
    return this;
  }
  /**
   * 通過(guò)圖片路徑為ImageView設(shè)置圖片
   * @param viewId
   * @param drawableId
   * @return
   */
  public ViewHolder setImageByUrl(int viewId, String url)
  {
    ImageLoader.getInstance(3,Type.LIFO).loadImage(url, (ImageView) getView(viewId));
    return this;
  }
  public int getPosition()
  {
    return mPosition;
  }
}

MyAdapter:

public class MyAdapter extends CommonAdapter<String>
{
  private List<String> mData ;
  public MyAdapter(Context context, List<String> mDatas, int itemLayoutId)
  {
    super(context, mDatas, itemLayoutId);
    this.mDatas = mDatas ;
  }
  @Override
  public void convert(final ViewHolder helper, final String item , int postion)
  {
    /**
     * 第一種
     */
    helper.setImageResource(R.id.item_ib01, R.drawable.ic_launcher);
    helper.setImageResource(R.id.item_iv01,
        R.drawable.ic_launcher);
    helper.setText(R.id.item_tv01, "我是第"+mDatas.get(postion)+"個(gè)") ;
    // 通過(guò)路徑設(shè)置圖片
//   helper.setImageByUrl(R.id.id_item_image, mDirPath + "/" + item);
  /*
   * 第二種
   */
    /*
     *
    final ImageView item_iv = helper.getView(R.id.item_iv01);
    final ImageButton item_ib = helper.getView(R.id.item_ib01);
    TextView item_tv = helper.getView(R.id.item_tv01) ;
    item_tv.setText("我是第"+mDatas.get(postion)+"個(gè)") ;
    item_iv.setImageResource(R.drawable.ic_launcher);
    item_ib.setColorFilter(Color.parseColor("#77000000"));
     */
  }
}

附:完整實(shí)例代碼點(diǎn)擊此處本站下載。

PS:該下載源碼包含了eclipse與studio兩個(gè)壓縮包。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android布局layout技巧總結(jié)》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android中RecyclerView實(shí)現(xiàn)分頁(yè)滾動(dòng)的方法詳解

    Android中RecyclerView實(shí)現(xiàn)分頁(yè)滾動(dòng)的方法詳解

    RecyclerView實(shí)現(xiàn)滾動(dòng)相信對(duì)大家來(lái)說(shuō)都不陌生,但是本文主要給大家介紹了利用Android中RecyclerView實(shí)現(xiàn)分頁(yè)滾動(dòng)的思路和方法,可以實(shí)現(xiàn)翻頁(yè)功能,一次翻一頁(yè),也可以實(shí)現(xiàn)翻至某一頁(yè)功能。文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04
  • Android實(shí)現(xiàn)環(huán)形進(jìn)度條

    Android實(shí)現(xiàn)環(huán)形進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)環(huán)形進(jìn)度條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android ListView異步加載圖片方法詳解

    Android ListView異步加載圖片方法詳解

    這篇文章主要介紹了Android ListView異步加載圖片方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了ListView異步加載圖片的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-02-02
  • Android自動(dòng)化獲取卡頓信息的實(shí)現(xiàn)方法

    Android自動(dòng)化獲取卡頓信息的實(shí)現(xiàn)方法

    自動(dòng)化獲取卡頓信息就像給App裝  “行車記錄儀”  —— 實(shí)時(shí)記錄主線程的“駕駛狀態(tài)”,一旦發(fā)現(xiàn)“急剎車”(卡頓),立刻保存現(xiàn)場(chǎng)(堆棧),事后回看錄像(日志)精準(zhǔn)定位問(wèn)題,本文給大家介紹了Android自動(dòng)化獲取卡頓信息的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2025-02-02
  • Android UI繪制流程及原理詳解

    Android UI繪制流程及原理詳解

    在本篇文章里小編給大家整理的是關(guān)于Android UI繪制流程及原理以及相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • 代碼實(shí)例分析android中inline hook

    代碼實(shí)例分析android中inline hook

    本片文章主要給大家通過(guò)代碼示例分析了android中inline hook的用法是實(shí)現(xiàn)過(guò)程,需要的朋友跟著參考下吧。
    2018-01-01
  • 詳解android 中animation-list 動(dòng)畫(huà)的應(yīng)用

    詳解android 中animation-list 動(dòng)畫(huà)的應(yīng)用

    本篇文章主要介紹了詳解android 中animation-list 動(dòng)畫(huà)的應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Android中的SQL查詢語(yǔ)句LIKE綁定參數(shù)問(wèn)題解決辦法(sqlite數(shù)據(jù)庫(kù))

    Android中的SQL查詢語(yǔ)句LIKE綁定參數(shù)問(wèn)題解決辦法(sqlite數(shù)據(jù)庫(kù))

    這篇文章主要介紹了Android中的SQL查詢語(yǔ)句LIKE綁定參數(shù)問(wèn)題解決辦法,本文使用的是sqlite數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2014-06-06
  • Android使用ImageView 制作透明圓弧實(shí)例代碼

    Android使用ImageView 制作透明圓弧實(shí)例代碼

    這篇文章主要介紹了Android使用ImageView 制作透明圓弧實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Android獲取所在時(shí)區(qū)時(shí)間的兩種方式

    Android獲取所在時(shí)區(qū)時(shí)間的兩種方式

    Android獲取所在時(shí)區(qū)正確時(shí)間的方式有兩種,通過(guò)wifi獲取時(shí)間和通過(guò)通過(guò)GPS獲取時(shí)間這兩種方式,文中通過(guò)代碼示例給大家的介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04

最新評(píng)論

枣阳市| 大庆市| 缙云县| 夹江县| 文山县| 天柱县| 资中县| 曲靖市| 会同县| 民勤县| 紫云| 曲沃县| 竹北市| 定日县| 汝州市| 平阳县| 夏河县| 当阳市| 汤原县| 宁陕县| 乳山市| 上饶市| 巴里| 南阳市| 漳浦县| 汉阴县| 江源县| 江川县| 肃宁县| 来宾市| 长葛市| 青冈县| 剑阁县| 禄劝| 安丘市| 达州市| 贡山| 赤峰市| 兰溪市| 吴川市| 大姚县|