第一步:布局文件和上一节课布局文件一样,在这里就不再阐述
第二步,新建com.example.zlianxi.utils,新建一个ViewHolder:
package
com.example.zlianxi.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class ViewHolder {
private SparseArray mViews;
private int mPosition;
private View mConView;
public View getmConView() {
return mConView;
}
public T getView(int viewld) {
View view = mViews.get(viewld);
if (view == null) {
view = mConView.findViewById(viewld);
mViews.put(viewld, view);
}
return (T) view;
}
public ViewHolder(Context context, int layoutld, ViewGroup
parent,
int position) {
this.mPosition = position;
this.mViews = new SparseArray();
mConView = LayoutInflater.from(context)
.inflate(layoutld, parent, false);
mConView.setTag(this);
}
public static ViewHolder get(Context context, View
converView,
int layoutld, ViewGroup parent, int position) {
if (converView == null) {
return new ViewHolder(context, layoutld, parent, position);
} else {
ViewHolder holder = (ViewHolder) converView.getTag();
holder.mPosition = position;
return holder;
}
}
public ViewHolder setText(int viewld, String text) {
TextView tv = getView(viewld);
tv.setText(text);
return this;
}
public ViewHolder setImageResource(int viewld, int imgld) {
ImageView lv = getView(viewld);
lv.setImageResource(imgld);
return this;
}
public ViewHolder setImageBitmap(int viewld, Bitmap bitmap)
{
ImageView lv = getView(viewld);
lv.setImageBitmap(bitmap);
return this;
}
}
第三步:新建一个commoadater:
package com.example.zlianxi.utils;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public abstract class CommonAdapter extends BaseAdapter
{
protected Context mcontext;
protected List mDates;
private int layoutld;
private LayoutInflater layoutInflater;
public CommonAdapter(Context context, List Dates,int layoutld)
{
this.mcontext = context;
layoutInflater = LayoutInflater.from(context);
this.mDates = Dates;
this.layoutld=layoutld;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mDates.size();
}
@Override
public T getItem(int position) {
// TODO Auto-generated method stub
return mDates.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup
parent) {
ViewHolder holder = ViewHolder.get(mcontext, convertView,
layoutld, parent, position);
convert(holder, getItem(position));
return holder.getmConView();
}
public abstract void convert(ViewHolder holder, T t);
}
第四步:以上两步已完成适配器的通用内容,接下来实现这两个方法,新建tongyongadapter完成适配器的内容:
package com.example.zlianxi;
import java.util.List;
import android.content.Context;
import com.example.zlianxi.Bean.Bean;
import com.example.zlianxi.utils.CommonAdapter;
import com.example.zlianxi.utils.ViewHolder;
public class tongyongadapter extends CommonAdapter
{
public tongyongadapter(Context context, List date,int layoutld)
{
super(context, date,layoutld);
}
@Override
public void convert(ViewHolder holder, Bean bean) {
holder.setText(R.id.iv_title, bean.getTitle())
.setText(R.id.iv_time, bean.getTime())
.setText(R.id.iv_desc, bean.getDesc())
.setText(R.id.iv_phone, bean.getPhone());
}
}
第五步:接下来在mainactivity中完成剩下的内容:
package com.example.zlianxi;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import com.example.zlianxi.Bean.Bean;
public class MainActivity extends Activity {
private ListView mlistView;
private List beans = new ArrayList();
// Myadapter myadapter;
tongyongadapter myadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initDate();
initView();
}
private void initView() {
mlistView = (ListView) findViewById(R.id.listview);
mlistView.setAdapter(myadapter);
}
private void initDate() {
Bean bean = new Bean("android获得get新技能",
"打造android中listview/gridview适配器", "2016-10-04", "10086");
beans.add(bean);
bean = new Bean("android获得get新技能1",
"打造android中listview/gridview适配器",
"2016-10-04", "10086");
beans.add(bean);
bean = new Bean("android获得get新技能2",
"打造android中listview/gridview适配器",
"2016-10-04", "10086");
beans.add(bean);
bean = new Bean("android获得get新技能3",
"打造android中listview/gridview适配器",
"2016-10-04", "10086");
beans.add(bean);
myadapter = new tongyongadapter(MainActivity.this,
beans,R.layout.listview_item);
}
}
注:Bean内容为:
package com.example.zlianxi.Bean;
//自己需要的listView或gridview中的内容
public class Bean {
private String title;
private String desc;
private String time;
private String phone;
public Bean() {
}
public Bean(String title, String desc, String time, String
phone) {
super();
this.title = title;
this.desc = desc;
this.time = time;
this.phone = phone;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
以上就完成万能适配器所有内容。