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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

[原]Android之自定义Adapter

發(fā)布時(shí)間:2024/1/18 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [原]Android之自定义Adapter 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
??在ListView中經(jīng)常用到適配器Adapter, android提供的三種Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,ArraAdapter是簡(jiǎn)單的字符串適配器,在實(shí)際項(xiàng)目中很少會(huì)用到(功能太有限),SimpleAdapter可以自定義ListView的每個(gè)Item的布局,一般在簡(jiǎn)單的布局中會(huì)考慮使用,而SimpleCursorAdapter主要用于數(shù)據(jù)庫(kù),前兩個(gè)的數(shù)據(jù)來(lái)源一般都是String[]或者List,后一個(gè)的數(shù)據(jù)來(lái)源一般是數(shù)據(jù)庫(kù)查詢得到的Cursor。

? 在實(shí)際的項(xiàng)目中,尤其listView的每個(gè)Item的布局比較復(fù)雜的時(shí)候,我們一般都要自定義自己的Adapter,要實(shí)現(xiàn)自己的Adapter,我們需要繼承BaseAdapter類,同時(shí)要覆寫其中的四個(gè)方法:

public int getCount() :該方法返回ListView中要顯示的子View的數(shù)量;

public Object getItem(int position):該方法返回一個(gè)子View,即listView中的一個(gè)子條目,也可以返回自己想要的信息。

public long getItemId(int position):該方法根據(jù)Item在listview中的位置,返回其id;

public View getView(int position, View convertView, ViewGroup parent) :該方法是最重要的,也是最難理解的了,它返回的是id為position的Item布局文件對(duì)應(yīng)的View,該View中的各組件可以在getView方法中配置其顯示。


? 這里還有一個(gè)點(diǎn)需要說(shuō)明,就是LayoutInflater類,它的inflate()方法可以根據(jù)布局文件獲得其View返回值,接下來(lái)我們就可以取得該View中的各個(gè)組件,便可以為其設(shè)置資源,從而配置其顯示。

? 一個(gè)簡(jiǎn)單的自定義實(shí)現(xiàn)Adapter的代碼類如下:

package com.example.activity; import com.example.activity.R; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class MenuActivity extends Activity { private ListView list = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); list = (ListView)findViewById(R.id.list); MyAdapter mAdapter = new MyAdapter(); list.setAdapter(mAdapter); } //自定義Adapter class MyAdapter extends BaseAdapter{ int[] images = new int[]{ R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher, R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher, R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher, R.drawable.ic_launcher }; String[] names = new String[]{ "干鍋兔肉","水煮牛肉","剁椒魚頭","臘牛肉","藏香雞", "蒜茸蒸茄子","小炒肚絲","鱔魚煨黃瓜","養(yǎng)生健康湯","鮮魚湯" }; String[] prices = new String[]{ "28","32","28","32","32", "28","28","26","20","30" }; @Override public int getCount() { // TODO Auto-generated method stub return names.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } //該方法返回整個(gè)Item的布局View @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub if(convertView == null){ //根據(jù)布局文件獲取其view返回值 convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_adapter, null); } //獲取listview中每個(gè)Item布局文件中的的子組件的ID ImageView image = (ImageView)convertView.findViewById(R.id.image); TextView name = (TextView)convertView.findViewById(R.id.name_course); TextView price_number = (TextView)convertView.findViewById(R.id.price_number); //為對(duì)應(yīng)的Item中的各個(gè)組件設(shè)置資源,從而配置其顯示 image.setImageResource(images[position]); name.setText(names[position]); price_number.setText(prices[position]); return convertView; } } }
? ?每個(gè)Item的布局文件如下:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dip" android:src="@drawable/ic_launcher" android:layout_marginTop="3dip" /> <TextView android:id="@+id/name_course" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dip" android:layout_marginTop="5dip" android:text="水煮活魚" android:layout_below="@id/image" android:textSize="16sp"/> <TextView android:id="@+id/price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/image" android:layout_marginLeft="15dp" android:layout_toRightOf="@+id/name_course" android:text="價(jià)格:" android:textSize="22sp" /> <TextView android:id="@+id/price_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/name_course" android:layout_centerHorizontal="true" android:text="48元" android:textSize="22sp"/> </RelativeLayout>
? ?最終的運(yùn)行效果如下:



程序代寫推薦

轉(zhuǎn)載于:https://www.cnblogs.com/java20131201/p/3466789.html

總結(jié)

以上是生活随笔為你收集整理的[原]Android之自定义Adapter的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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