android 之自定义Adapter的用法
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                android    之自定义Adapter的用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                使用方法:
自定義一個類使其繼承BaseAdapter,再在此類中實現四個方法
<1>getCount():得到數據源中元素的個數
<2>getItem(int position):根據索引位獲取指定索引位得到數據值
<3>getItemAtID(int position):根據索引位返回行號
<4>getView(int position,View convertView,ViewGroup parent):每繪制一個條目就會自動調用一次當前方法
ListView的優化:就是重用條目。
注意:這里ListView優化是有一個模型:我戲稱為:"傳送帶模型"
示例代碼:
前臺展示:
<?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());}/*** 面試題:自定義適配器需要繼承哪個類,實現哪些方法,這些方法有什么用?* 答:繼承BaseAdapter* 實現的方法有:* getCount():得到數據源中元素的個數* getItem(int position):根據索引位獲取指定索引位的數據值* getItemAtId(int position):根據索引位返回行號* getView(int postion,View convertView,ViewGroup parent):每繪制一個條目就會自動調用一次當前方法**/private final class MyAdapter extends BaseAdapter{/*** 返回數據源中元素的個數** 當返回值為0時,不會繪制任何條目,即不會調用getView()方法* 當返回值為1時,繪制一個條目,即調用一次getView()方法* 當返回值為2時,繪制兩個條目,即調用兩次getView()方法* ......* 當返回值為n 時,繪制n個條目,即調用n 次getView()方法** 注意:實際繪制的條目數為=手機屏幕的高度/每一個條目的高度(如果不能整除,則取大于商的最小整數)* @return*/@Overridepublic int getCount() {System.out.println("==getCount()===");return 30;}/*** 根據指定的索引值返回指定索引處的元素值* @param position* @return*/@Overridepublic Object getItem(int position) {System.out.println("===getItem(int position="+position+")===");return null;}/*** 根據索引位返回行號,一般和position 相等* @param position* @return*/@Overridepublic long getItemId(int position) {System.out.println("==getItemId(int position="+position+")===");return position;}/*** 當每繪制一個條目時都會自動調用當前方法* @param position 當前正在繪制條目的索引值* @param convertView 緩存條目而存在的,當第一次繪制的條目上移,下面有新條目被繪制,此時convertView的值還是為null,* 繼續上移,直到第一次繪制的條目徹底移除我們的視線,此時下面應該會有新的條目出現了,此時出現的新條目就* 不應該是重新實例化新的了,應該重用之前第一次移出去的條目,此時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的優化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+"條數據!");System.out.println("=====getView(int position="+position+", View convertView="+convertView+", ViewGroup parent="+parent+")====");return textView;}} }總結
以上是生活随笔為你收集整理的android 之自定义Adapter的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: android 之json对象解析并
- 下一篇: 阿勒泰自驾到绥化红星油费
