Adatper是什麼呢? 說白了就是連接activity和數據端的橋樑。關於Adapter有很多種,比如SimpleAdapter,ArrayAdapter等等,但是大部分時候這些adapter不能滿足我們開發的需求。所以在這時候,自定adapter就起到了重要的作用,給我們帶來很大的方便。閒話少說,直奔主題:如何使用自定義的Adapter
package cn.adapter; import java.util.List; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import cn.bean.NewsInfos; import cn.internetdata.R; /** * 自定義adapter的使用 * * @author YSY */ // 1。首先創建一個類,來繼承BaseAdapter,從而成爲一個adapter public class MyAdapter extends BaseAdapter { Context context; List<NewsInfos> newsInfos; // 重寫其構造方法,裏面有兩個參數Context,List<E> 下面的部分方法中會用到 public MyAdapter(Context context, List<NewsInfos> newsInfos) { this.context = context; this.newsInfos = newsInfos; } // 2.添加未實現的方法getCount(), getItem(int position),getItemId(int // position),getView(int position, View convertView, ViewGroup parent) public int getCount() { return newsInfos.size(); } @Override public Object getItem(int position) { return newsInfos.get(position); } @Override public long getItemId(int position) { return position; } // 此方法最爲重要 返回的對象是一個View @Override public View getView(int position, View convertView, ViewGroup parent) { Holder holder = null; // 爲了節省資源,當子View充滿手機一屏的話,後面的數據就會加載到第一屏的view上 if (convertView == null) { // 把一個xml文件轉換成一個View convertView = View.inflate(context, R.layout.activity_item, null); // 創建一個Holder對象,用來存放holder中定義的各個屬性 holder = new Holder(); // 在View中尋找各個控件對象 holder.title = (TextView) convertView.findViewById(R.id.tv_title); holder.date = (TextView) convertView.findViewById(R.id.tv_date); // 把holder對象保存在View中 convertView.setTag(holder); } else { // 直接衝View中取出holder即可 holder = (Holder) convertView.getTag(); } // 爲holder中的各個對象賦值 holder.title.setText(newsInfos.get(position).getNewstitle()); holder.date.setText(newsInfos.get(position).getCreateDate()); return convertView; } // 創建一個類,來存放各個控件的對象 private class Holder { public TextView title; public TextView date; } }
在activity端爲View控件設置數據的時候,一般都會用到adapter,進一步說都要view.setAdapter(adapter);
activity端
view.setAdapter(new MyAdapter());
在上面代碼中的 R.layout.activity_item是自定義的一個xm佈局文件
<?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" android:background="#FFFFFF" android:orientation="vertical" > <TextView android:id="@+id/tv_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="標題" android:textColor="#ff000000" android:textSize="23sp" /> <TextView android:id="@+id/tv_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="時間" android:textColor="#ff000000" android:textSize="23sp" /> </LinearLayout>
其中還可以加入圖片,視屏控件,根據自己需要,添加相應的控件即可