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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 之自定义Adapter的用法

發(fā)布時間:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 之自定义Adapter的用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用方法:

自定義一個類使其繼承BaseAdapter,再在此類中實現(xiàn)四個方法

<1>getCount():得到數(shù)據(jù)源中元素的個數(shù)

<2>getItem(int position):根據(jù)索引位獲取指定索引位得到數(shù)據(jù)值

<3>getItemAtID(int position):根據(jù)索引位返回行號

<4>getView(int position,View convertView,ViewGroup parent):每繪制一個條目就會自動調(diào)用一次當前方法

ListView的優(yōu)化:就是重用條目。

注意:這里ListView優(yōu)化是有一個模型:我戲稱為:"傳送帶模型"





示例代碼:

前臺展示:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/listView_names"/></LinearLayout>

后臺邏輯:

package com.hsj.example.listviewwithbaseadapterdemo04;import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView;public class MainActivity_bak01 extends AppCompatActivity {private ListView listView_names;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//自動修正的快捷鍵alt+回車this.listView_names= (ListView) this.findViewById(R.id.listView_names);this.listView_names.setAdapter(new MyAdapter());}/*** 面試題:自定義適配器需要繼承哪個類,實現(xiàn)哪些方法,這些方法有什么用?* 答:繼承BaseAdapter* 實現(xiàn)的方法有:* getCount():得到數(shù)據(jù)源中元素的個數(shù)* getItem(int position):根據(jù)索引位獲取指定索引位的數(shù)據(jù)值* getItemAtId(int position):根據(jù)索引位返回行號* getView(int postion,View convertView,ViewGroup parent):每繪制一個條目就會自動調(diào)用一次當前方法**/private final class MyAdapter extends BaseAdapter{/*** 返回數(shù)據(jù)源中元素的個數(shù)** 當返回值為0時,不會繪制任何條目,即不會調(diào)用getView()方法* 當返回值為1時,繪制一個條目,即調(diào)用一次getView()方法* 當返回值為2時,繪制兩個條目,即調(diào)用兩次getView()方法* ......* 當返回值為n 時,繪制n個條目,即調(diào)用n 次getView()方法** 注意:實際繪制的條目數(shù)為=手機屏幕的高度/每一個條目的高度(如果不能整除,則取大于商的最小整數(shù))* @return*/@Overridepublic int getCount() {System.out.println("==getCount()===");return 30;}/*** 根據(jù)指定的索引值返回指定索引處的元素值* @param position* @return*/@Overridepublic Object getItem(int position) {System.out.println("===getItem(int position="+position+")===");return null;}/*** 根據(jù)索引位返回行號,一般和position 相等* @param position* @return*/@Overridepublic long getItemId(int position) {System.out.println("==getItemId(int position="+position+")===");return position;}/*** 當每繪制一個條目時都會自動調(diào)用當前方法* @param position 當前正在繪制條目的索引值* @param convertView 緩存條目而存在的,當?shù)谝淮卫L制的條目上移,下面有新條目被繪制,此時convertView的值還是為null,* 繼續(xù)上移,直到第一次繪制的條目徹底移除我們的視線,此時下面應該會有新的條目出現(xiàn)了,此時出現(xiàn)的新條目就* 不應該是重新實例化新的了,應該重用之前第一次移出去的條目,此時convertView 就不再為null了,它其實就是* 第一次移除去的條目,重用即可提高效率** @param parent 事件源**** textView0=android.widget.TextView{53510070 V.ED.... ......ID 0,0-0,0}textView1=android.widget.TextView{53510dfc V.ED.... ......ID 0,0-0,0}textView2=android.widget.TextView{535116d0 V.ED.... ......ID 0,0-0,0}ListView的優(yōu)化A:重用條目* @return*/@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TextView textView=null;if(convertView==null){textView=new TextView(MainActivity_bak01.this);}else{textView= (TextView) convertView;}System.out.println("textView"+position+"="+textView);textView.setText("第"+position+"條數(shù)據(jù)!");System.out.println("=====getView(int position="+position+", View convertView="+convertView+", ViewGroup parent="+parent+")====");return textView;}} }

總結

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

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