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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android listview高级,Android 高级控件笔记-列表视图ListView 基本适配器BaseAdapter

發布時間:2024/7/23 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android listview高级,Android 高级控件笔记-列表视图ListView 基本适配器BaseAdapter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我最近做項目用到了基本適配器BaseAdapter,所以寫篇博客總結一下,希望也能對你有所幫助

什么時候用BaseAdapter(同一項存在多個控件,復雜的列表時)

Android中Adapter類其實就是把數據源綁定到指定的View上,然后再返回該View,而返回來的這個View就是ListView中的某一行item。這里返回來的View正是由我們的Adapter中的getView方法返回的。這樣就會容易理解數據是怎樣一條一條顯示在ListView 中的。

簡單的ListView可使用ArrayAdapter和SimpleAdapter兩種適配器。其中, ArrayAdapter適用于純文本的列表數據,SimpleAdapter適用于帶圖標的列表數據。實際應用中常常有更復雜的列表,比如同一項中存在多個控件,這種情況即使用SimpleAdapter也很吃力,而且不易擴展?;诖?#xff0c; Android提供了一種適應性更強的基本適配器BaseAdapter,該適配器允許開發者在別的代碼文件中進行邏輯處理,大大提高了代碼的可讀性和可維護性。

step1:創建列表單行的布局

新建一個layout,和普通的layout文件差不多,只不過這個文件設置的是ListView單項的樣式。

例如:item_layout.xml

android:id="@+id/textview_date"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="TextView"android:textAppearance="@style/TextAppearance.AppCompat.Medium"android:visibility="visible" />

android:layout_width="match_parent"android:layout_height="50dp"android:orientation="horizontal">

android:id="@+id/image_time"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="0.5" />

android:id="@+id/textview_time"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:textAppearance="@style/TextAppearance.AppCompat.Large" />

step2:實現BaseAdapter的基本方法

寫一個新的適配器繼承BaseAdapter,從BaseAdapter派生的數據適配器主要實現下面幾個方法。

構造函數:指定適配器需要處理的數據集合。

getCount:獲取數據項的個數。

getView:獲取每項的展示視圖,并對每項的內部控件進行業務處理。

getItem:數據集中指定索引對應的數據項。

例如:

public class MyListAdapter extendsBaseAdapter {

Context context;

List data; //數據源int layout; //Item布局

public MyListAdapter(Context context, int layout ,Listdata){this.context=context;this.layout=layout;this.data=data;

}/*** 這里的getCount方法是程序在加載顯示到ui上時就要先讀取的

* 這里獲得的值決定了listview顯示多少行

* 實際應用中此處的返回值是由從數據庫中查詢出來的數據的總條數*/@Overridepublic intgetCount() {return data == null ? 0: data.size();

}/*** 根據ListView所在位置返回View

*@paramposition

*@return選中的數據*/@Overridepublic Object getItem(intposition) {

Nbp_data Nbp_choosen_data=data.get(position);//return Nbp_choosen_data == null ? null : data.get(position);

returnNbp_choosen_data;

}/*** 根據ListView位置得到數據源集合中的Id

*@paramposition

*@return

*/@Overridepublic long getItemId(intposition) {returnposition;

}/*** 重寫adapter最重要的就是重寫此方法,此方法也是決定listview界面的樣式的

*@paramposition

*@paramconvertView

*@paramparent

*@return

*/@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {

ImageView imageView_time;

TextView textView_time;

TextView textView_date;final p_data record_data=data.get(position);if (convertView == null) {

convertView= LayoutInflater.from(context).inflate(layout,null);

}else{

}

imageView_time=(ImageView) convertView.findViewById(R.id.image_time);

textView_time=(TextView) convertView.findViewById(R.id.textview_time);

textView_date=(TextView) convertView.findViewById(R.id.textview_date);

imageView_time.setImageResource(record_data.getTimeImage());

textView_date.setText(record_data.getDATE());

textView_time.setText(record_data.getTIME());

returnconvertView;

}

}

在列表單行控件比較多的時候,ViewHolder方法可大幅度優化ListView的滑動。

step3:在Activity或Fragment中與ListView綁定

例如:

//在fragment的onCreateView()中

MyListAdapter myListAdapter=newMyListAdapter(root.getContext(),R.layout.item_layout,recorded_data);

ListView listView=(ListView)root.findViewById(R.id.lv_recordedData);

listView.setAdapter(myListAdapter);//設置事件監聽

listView.setOnItemClickListener(newAdapterView.OnItemClickListener() {

@Overridepublic void onItemClick(AdapterView> arg0, View arg1, int arg2, longarg3) {

p_data choosen_data=(p_data)arg0.getItemAtPosition(arg2);int date =choosen_data.getDATE();int time =choosen_data.getTIME();}

});長按事件監聽

// listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){//@Override//public boolean onItemLongClick(AdapterView> arg0, View arg1, int arg2, long arg3){//return true;//}//});

參考:

《Android Studio開發實戰:從零基礎到App上線》?歐陽燊??清華大學出版社

原文:https://www.cnblogs.com/XIEjm/p/12813935.html

總結

以上是生活随笔為你收集整理的android listview高级,Android 高级控件笔记-列表视图ListView 基本适配器BaseAdapter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。