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>
其中还可以加入图片,视屏控件,根据自己需要,添加相应的控件即可
转载于:https://blog.51cto.com/930307/1335497