国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Xlistview實(shí)現(xiàn)上拉刷新下拉加載及item可單選

2019-11-09 14:10:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

實(shí)現(xiàn)思路: 1.首先要準(zhǔn)備并拷入Xlistview的源代碼或者jar包,新建一個(gè)項(xiàng)目XlistviewDemo對(duì)Xlistview的源代碼形成依賴。 2.準(zhǔn)備Xlistview的主布局文件Xlistview_layout.xml中添加X(jué)listview控件。 3.準(zhǔn)備Xlistview的Item布局文件Xlistview_item.xml,里面兩個(gè)控件,一個(gè)放數(shù)據(jù),一個(gè)放點(diǎn)擊可顯示的單選圖標(biāo)。 4.新建一個(gè)adapter包和MyBaseAdapter繼承BaseAdapter。(并優(yōu)化) 5.在主activity中聲明并注冊(cè)Xlistview,初始化數(shù)據(jù)源和適配器,并設(shè)置給Xlistview實(shí)現(xiàn)代碼。(至此已實(shí)現(xiàn)listview)。最后讓Mainactivity實(shí)現(xiàn)IXListViewListener接口,重寫(xiě)兩個(gè)方法實(shí)現(xiàn)上拉刷新和下拉加載功能。


1.首先要準(zhǔn)備并拷入Xlistview的源代碼或者jar包,新建一個(gè)項(xiàng)目XlistviewDemo對(duì)Xlistview的源代碼形成依賴。

拷入源代碼形成依賴的方法待完善

2.準(zhǔn)備Xlistview的主布局文件Xlistview_layout.xml中添加X(jué)listview控件。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ll"android:layout_width="match_parent" android:layout_height="match_parent"tools:context="com.soft.qianyu.sw在外圍用LinearLayout包裹Xlistview(注意布局和Xlistview都要設(shè)置id)。


3.準(zhǔn)備Xlistview的Item布局文件Xlistview_item.xml,里面兩個(gè)控件,一個(gè)放數(shù)據(jù),一個(gè)放點(diǎn)擊可顯示的單選圖標(biāo)。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"><TextView android:id="@+id/text" android:layout_width="0dp" android:layout_weight="9" android:layout_height="wrap_content" android:textSize="35sp" android:gravity="center" /> <TextView android:id="@+id/select_tv" android:visibility="invisible" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="√" android:textColor="@color/colorAccent" android:gravity="center" android:textSize="35sp" /></LinearLayout>

兩個(gè)TextView一個(gè)放置數(shù)據(jù),另外一個(gè)點(diǎn)擊會(huì)改變visitible屬性。


4.新建一個(gè)adapter包和MyBaseAdapter繼承BaseAdapter。(并優(yōu)化)

public class MyBaseAdapter extends BaseAdapter { //一個(gè)BaseAdapter需要數(shù)據(jù)源和打氣筒,所以先聲明兩個(gè)變量 ArrayList<String> datas; LayoutInflater inflater; //為了能定位到點(diǎn)擊的位置,所以先聲明一個(gè)選中項(xiàng)的位置常量 public int selectedPosition = 0 ; //提供BaseAdapter適配器的構(gòu)造器 public MyBaseAdapter(ArrayList<String> datas, Context context){ this.datas = datas; //inflater對(duì)象是從上下文中來(lái)獲取來(lái)的 inflater = LayoutInflater.from(context); } //獲得數(shù)據(jù)源的總數(shù) @Override public int getCount() { return datas==null?0:datas.size(); } //獲得指定位置的數(shù)據(jù)源 @Override public Object getItem(int position) { //如果數(shù)據(jù)源為空,返回為空 return datas==null?null:datas.get(position); } //獲得指定位置的item的下標(biāo) @Override public long getItemId(int position) { return position; } //加載item布局并展示數(shù)據(jù) @Override public View getView(int position, View convertView, ViewGroup viewGroup) { //為實(shí)現(xiàn)單布局加載和緩存控件,先要聲明者兩個(gè)變量 View view; ViewHolder holder;//實(shí)現(xiàn)單布局加載if (convertView==null){view=inflater.inflate(R.layout.xlistview_item,null);//實(shí)現(xiàn)緩存控件holder = new ViewHolder();holder.text = (TextView) view.findViewById(R.id.text);holder.select_tv = (TextView) view.findViewById(R.id.select_tv); //將holder與view綁定緩存 view.setTag(holder); }else { //直接顯示控件 view = convertView ; holder = (ViewHolder) view.getTag(); } //獲得指定位置的數(shù)據(jù),若定位的是所選控件,則改變它的visible屬性。 String data = datas.get(position); if(selectedPosition== position) { holder.select_tv.setVisibility(View.VISIBLE); }else { holder.select_tv.setVisibility(View.INVISIBLE); } //將數(shù)據(jù)展示出來(lái) holder.text.setText(data); return view; } //緩存控件的ViewHolder類 class ViewHolder{ TextView text ; TextView select_tv; }}

5.在MainActivity中聲明并注冊(cè)Xlistview,初始化數(shù)據(jù)源和適配器,并設(shè)置給Xlistview實(shí)現(xiàn)代碼。(至此將實(shí)現(xiàn)listview基本效果)

//implements XListView.IXListViewListener的意思是將會(huì)提供刷新和加載這兩個(gè)方法讓你進(jìn)行重寫(xiě),你只要在里面放入你要處理的數(shù)據(jù)就可以了。public class MainActivity extends Activity implements XListView.IXListViewListener {//首先聲明各個(gè)變量,包括Xlistview控件,數(shù)據(jù)源datas,適配器adapter等//flag表示你每次刷新的時(shí)候的標(biāo)記。 ArrayList<String> datas; MyBaseAdapter adapter; XListView xListView; boolean flag = false; @Override
PRotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化方法 init(); }//進(jìn)行初始化 private void init() { //初始化xlistview xListView = (XListView) findViewById(R.id.xListView); //初始化數(shù)據(jù)源和數(shù)據(jù) datas = new ArrayList<String>(); getData1(); //初始化適配器并為Xlistview綁定適配器 adapter = new MyBaseAdapter(datas,MainActivity.this); xListView.setAdapter(adapter);//以上方法即可實(shí)現(xiàn)簡(jiǎn)單類似listview的展示效果,以下就是上拉刷新下拉加載的代碼部分 //為xlistview設(shè)置監(jiān)聽(tīng)事件,重寫(xiě)刷新加載的兩個(gè)方法 xListView.setXListViewListener(this); //設(shè)置xlistview允許上拉加載更多 xListView.setPullLoadEnable(true); //設(shè)置xlistview的item點(diǎn)擊事件,顯示單選功能 xListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {//點(diǎn)擊item的時(shí)候講adapter的selectedPosition的值設(shè)定為當(dāng)前點(diǎn)擊的item位置(因?yàn)閤listview有個(gè)默認(rèn)的標(biāo)題欄占據(jù)了一個(gè)位置,所以要減1)adapter.selectedPosition = position-1 ;//只要是adapter里面的數(shù)據(jù)發(fā)生了變化就必須要調(diào)用notifyDataSetChanged通知改變 adapter.notifyDataSetChanged(); } }); }//初始化的數(shù)據(jù) private void getData1() { datas.add("趙云"); datas.add("關(guān)羽"); datas.add("劉備"); datas.add("曹操"); datas.add("貂蟬"); datas.add("呂布"); datas.add("李師師"); } //刷新的數(shù)據(jù) private void getData2() { datas.add("常勝將軍"); datas.add("漢壽亭候"); datas.add("仁君"); datas.add("奸雄"); datas.add("三國(guó)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 茶陵县| 定南县| 井冈山市| 鄂州市| 襄樊市| 常州市| 临高县| 平利县| 周至县| 海宁市| 年辖:市辖区| 轮台县| 滕州市| 十堰市| 云霄县| 兴城市| 洛浦县| 渝北区| 三都| 广水市| 孟津县| 呼图壁县| 崇阳县| 达州市| 尚义县| 天镇县| 望奎县| 西华县| 凉山| 尉犁县| 田东县| 丰都县| 邵东县| 遂溪县| 鹿邑县| 波密县| 资讯 | 枣强县| 苗栗县| 海宁市| 微山县|