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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[android] listview入门

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [android] listview入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Listview組件非常重要,4分之一的時間都是在搞這個,還是通過上一節的數據庫,寫個for循環,插入50條數據。

?

先使用笨方法顯示數據,根布局LinearLayout?定義一個id,在activity里面獲取這個id

獲取PersonDao對象,調用dao對象的查詢全部的方法,得到一個list集合的數據。

遍歷這個集合,遍歷中調用person實體類對象的toString()方法,得到一條記錄的字符串。

遍歷中實例化TextView對象,調用TextView對象的setText()方法,把一條信息放進去。

調用LinearLayout對象的addView(child)方法,child參數就是子view對象

笨方法代碼:

LinearLayout lv=(LinearLayout) findViewById(R.id.lv);PersonDao dao=new PersonDao(this);List<Person> persons=dao.select();for(Person person:persons){TextView tv=new TextView(this);tv.setText(person.toString());lv.addView(tv);}

?

?

?

此時屏幕高度不夠,超出去的信息會直接隱藏,系統給提供了一個組件叫ScrollView可以上下滾動,包裹一下LinearLayout,此時會提示命名空間那里錯誤,把命名空間放在SorollView里,指定寬度和高度都是填充父窗體

?

當數據量比較大時,這樣直接new出無數對象很消耗資源,應該是在滑動過程中動態new出組件對象,超出視線就銷毀掉,這個時候引入了新的控件ListView

?

獲取ListView對象,通過findViewById()方法,調用ListView對象的setAdapter(adapter)方法設置數據綁定到ListView,參數是一個ListAdapter接口類型,我們要實現這個接口,把實現類對象傳進去,定義一個私有的內部類實現ListAdapter,這時會要求實現幾十個方法,太多了,系統為我們提供了一個實現類BaseAdapter,默認的實現類大部分都是以BaseXxxSimpleXxxDefaultXxx開頭

?

BaseAdapter是一個抽象類,要實現他的抽象方法,內部類繼承BaseAdapter實現以下方法

getCount(),返回int數據的條數,把我的數據集合定義成成員屬性,調用List集合size()方法

getItem()

getItemId()

getView(position,)?控制索引位置的View對象,position是當前集合的索引,

在這個方法中,我們可以實例化TextView對象,需要傳入上下文對象,使用getApplicationContext()獲取上下文,調用TextView對象的setText(),數據是List集合調用get()方法,傳入索引position獲得,返回那個TV對象。在這個方法中Log.i()打印日志可以看到只會生成視線范圍內的View對象。

activity代碼:

?

package com.tsh.database;import java.util.List;import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView;import com.tsh.database.dao.PersonDao; import com.tsh.database.domain.Person;public class MainActivity extends Activity {private List<Person> persons;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView lv=(ListView) findViewById(R.id.mylist);PersonDao dao=new PersonDao(this);persons=dao.select();lv.setAdapter(new MyAdapter());}private class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {// TODO Auto-generated method stubreturn persons.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Log.i("MainActivity", "生成對象"+position);TextView tv=new TextView(getApplicationContext());Person person=persons.get(position);tv.setText(person.toString());return tv;}} }

?

?

總結

以上是生活随笔為你收集整理的[android] listview入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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