日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 适配器 自定义

發(fā)布時間:2023/12/16 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 适配器 自定义 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

  前言:最近看了幾個開源項目,發(fā)現(xiàn)適配器這東西用的很多,一開始覺得這東西高大上,其實呢,感覺就是一個中轉(zhuǎn)站,或者說是一個接口工具,將數(shù)據(jù)填充到一個視圖中,幾乎任何項目都會涉及到。所以今天也簡單看了一下,做一做筆記。

?

  1.一般情況,第一步,就是建立一個類繼承BaseAdapter=====在自己寫一個構(gòu)造函數(shù),很簡單,主要是LayoutInflater和Context=====這兩個東西相當(dāng)重要,感覺貫穿了整個工程,哪里都涉及到,所以這里建立兩個私有成員,將構(gòu)造函數(shù)的參數(shù)傳給私有成員即可。

?

  2.其次,覆寫一個=====int getCount()=====獲得配器中數(shù)據(jù)集的數(shù)據(jù)個數(shù)。

?

  3.其次,覆寫一個=====Object getItem(int position)=====獲取數(shù)據(jù)集 與 索引對應(yīng)的數(shù)據(jù)項=====很少用,不用管。

?

  4.其次,覆寫一個=====getItemId(int positon)=====獲取指定行對應(yīng)的ID=====個人也很少用,不管。

?

  5.最后,覆寫一個=====View getView(int position,View convertView,ViewGroup parent)=====非常重要,基本千變?nèi)f化的就是這個東西了。

?

  6.一個案例=====再細節(jié)分析

package com.juns.wechat.adpter;import java.util.List;import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView;import com.easemob.chat.EMGroup; import com.juns.wechat.Constants; import com.juns.wechat.R; import com.juns.wechat.chat.ChatActivity; import com.juns.wechat.common.ViewHolder;public class MyGroupAdpter extends BaseAdapter {protected Context context;private List<EMGroup> grouplist;public MyGroupAdpter(Context ctx, List<EMGroup> grouplist) {context = ctx;this.grouplist = grouplist;}@Overridepublic int getCount() {return grouplist.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.layout_item_mygroup, parent, false);}final EMGroup group = grouplist.get(position);ImageView img_avar = ViewHolder.get(convertView, R.id.img_photo);TextView txt_name = ViewHolder.get(convertView, R.id.txt_name);img_avar.setImageResource(R.drawable.defult_group);txt_name.setText(group.getGroupName());convertView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(context, ChatActivity.class);intent.putExtra(Constants.NAME, group.getGroupName());intent.putExtra(Constants.TYPE, ChatActivity.CHATTYPE_GROUP);intent.putExtra(Constants.GROUP_ID, group.getGroupId());context.startActivity(intent);}});return convertView;} }

?

  7.首先是一個類叫做MyGroupAdpter=====繼承了BaseAdapter=====一般情況下都是繼承這個東西的,所以不用管那么多的,這個最簡單,最方便。

?

  8.兩個成員變量=====Context=====為了獲取到上下文,獲取到之后保存到這里,然后再進行其他操作。  =====List<EMGroup>=====一個類的列表=====也是為了從別人那里得到,然后再進一步地操作。  =====一般有很多這樣的,都是不得不建立一個成員變量只為了從別人那里得到,自己用。

?

  9.然后是一個構(gòu)造函數(shù),里面有兩個參數(shù),一個是Context=====上下文的意思,這個東西也非常關(guān)鍵,大多數(shù)情況都要,所以直接寫上。第二個是一個List<自定義類>,意義也就是傳值吧,將外面的東西帶到這里面,然后我在把它加工一下,然后輸出,然后又作為原材料,傳給別人用,然后別人再次加工,然后再輸出,可以說一個項目基本都是這樣的,來來回回的,只為了最后那個美麗的結(jié)果。

?

  10.然后是一個覆寫的一個getCount方法,這里返回的是從外面?zhèn)鬟M來的一個List<自定義類>的數(shù)目,有時候要算長度什么的,直接調(diào)用就有結(jié)果了。

?

  11.然后是getItem方法,用的比較少,返回一個對象,外面的世界傳進去一個索引,它自己產(chǎn)生一個對象。就是這么簡單而智能。

?

  12.然后是getItem方法,外面的世界依舊傳進去一個索引,它自己產(chǎn)生一個唯一標(biāo)識的ID,這就很有個性了吧。不過實際中也很少用噠。

?

  13.最后就是重頭戲了。getView方法=====其實它就是每一個=====是每一行!這里可以自定義很多東西了,外面的世界傳進去了一個索引,一個視圖,一個視圖組。首先判斷外面的世界傳進去的一個view是否為空,如果為空,那就太不仗義了,就行給別人一個空紅包一樣,所以這里首先進行判斷。如果是真的紅包,那么就要真的干活了。

?

  14.干什么活呢?當(dāng)然是加載一個布局了。這個布局只是其中一個的布局哦。個人感覺也是代表了集體,就像一個班長一樣,帶個頭,其他人都這么做了。要加載布局當(dāng)然要有數(shù)據(jù)啊,不然一個空殼,真的很尷尬,是不是?!

?

  15.那么數(shù)據(jù)怎么來呢?當(dāng)然是外面的世界傳進來的啊!怎么傳進來的啊?=====構(gòu)造函數(shù)啊!總是第一次執(zhí)行,就像一個onCreate=====我稱之為夢開始的地方=====因為只有這個東西正確執(zhí)行了,布局才有可能加載出來。

?

  16.外面的世界將數(shù)據(jù)傳進來了,用一個成員變量暫時存一下,然后得到布局中的細節(jié)東西,通過ViewHolder這個工具類或者直接用findViewById簡單粗暴來獲得某一個視圖,然后就把對應(yīng)的值寫進去就行了。

?

  17.注意這個函數(shù),外面的世界還傳了一個position,那么就很開心了,我們可以為這個視圖設(shè)置監(jiān)聽器,就是用戶按了這一行,我們要怎么操作,上面的例子就是跳到另外一個活動,應(yīng)該都能看懂的。最后返回一個視圖,就是我們操作完之后的一個視圖,這個視圖就十分美麗了。

?

  18.困死了。早點休息吧。=====晚安=====2017/7/17 0:34

轉(zhuǎn)載于:https://www.cnblogs.com/Jason-Jan/p/7192539.html

總結(jié)

以上是生活随笔為你收集整理的Android 适配器 自定义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。