Android adapter最新用法

来源:互联网 发布:网络电话会议软件 编辑:程序博客网 时间:2024/05/16 06:01

今日看了hyman的博客,结合自己现有知识,整理出ListView adapter适配器的最简单的用法(个人认为)。

以下是代码:

  ViewHolder:

   

import android.util.SparseArray;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.TextView;public class ViewHolder { @SuppressWarnings("unchecked")public static <T extends View> T get(View view, int id) {        SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();        if (viewHolder == null) {            viewHolder = new SparseArray<View>();            view.setTag(viewHolder);        }        View childView = viewHolder.get(id);        if (childView == null) {            childView = view.findViewById(id);            viewHolder.put(id, childView);        }        return (T) childView;    }  public static void setTextView(View view, int id,String text){ TextView tv=get(view, id); tv.setText(text); }  public static TextView getTextView(View view, int id){ TextView tv=get(view, id); return tv; }   public static void setButton(View view, int id,String text){ Button bt=get(view, id); bt.setText(text); }  public static Button getButton(View view, int id){ Button bt=get(view, id); return bt; }   public static void setCheckBox(View view, int id,boolean isCheck){ CheckBox cb=get(view, id); cb.setChecked(isCheck); }   public static CheckBox getCheckBox(View view, int id){ CheckBox cb=get(view, id); return cb; }  public static ImageView getImageView(View view, int id){ ImageView imageView=get(view, id); return imageView; } public static ImageView setImageResource(View view, int id,int drawable){ ImageView imageView=get(view, id); imageView.setImageResource(drawable); return imageView; } public static ImageView setBackgroundResource(View view, int id,int drawable){ ImageView imageView=get(view, id); imageView.setBackgroundResource(drawable); return imageView; }  }
 


   ListViewAdapter:

  

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 ListViewAdapter<T> extends BaseAdapter{public LayoutInflater inflater=null;protected List<T> list;public ListViewAdapter(Context context,List<T> list){this.inflater=LayoutInflater.from(context);this.list=list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic T getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubint layout=setContentView();if(convertView==null){convertView=inflater.inflate(layout, null);}initial(convertView,getItem(position));return convertView;}public abstract int setContentView();public abstract void initial(View view,T t);}

  GroupAdapter:

  

import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;public abstract class GroupAdapter<T> extends BaseAdapter{public LayoutInflater inflater=null;private T[] arr;public GroupAdapter(Context context,T [] arr){this.inflater=LayoutInflater.from(context);this.arr=arr;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn arr.length;}@Overridepublic T getItem(int position) {// TODO Auto-generated method stubreturn arr[position];}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubint layout=setContentView();if(convertView==null){convertView=inflater.inflate(layout, null);}initial(convertView,getItem(position));return convertView;}public abstract int setContentView();public abstract void initial(View view,T t);}

  下面是测试Adapter:

  

import java.util.List;import android.content.Context;import android.view.View;import com.example.listviewadapter.R;public class StudentAdapter2 extends ListViewAdapter<Student> {public StudentAdapter2(Context context, List<Student> list) {super(context, list);// TODO Auto-generated constructor stub}@Overridepublic int setContentView() {// TODO Auto-generated method stubreturn R.layout.list2;}@Overridepublic void initial(View view, Student t) {// TODO Auto-generated method stubViewHolder.setTextView(view, R.id.name,t.getName());ViewHolder.setTextView(view, R.id.intruduce,t.getIntrudce());}}

Activity:

 

import har.lanyan.adapter.NewsAdapter;import har.lanyan.adapter.Student;import har.lanyan.adapter.StudentAdapter2;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.widget.ListView;import com.lidroid.xutils.ViewUtils;import com.lidroid.xutils.view.annotation.ViewInject;public class MainActivity extends ActionBarActivity {@ViewInject(R.id.listview)private ListView mListView;private List<Student> list;private StudentAdapter2 adapter;private Integer[] arr;private NewsAdapter groupAdater;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ViewUtils.inject(this);list=getData(20);initial();}private List<Student> getData(int i) {// TODO Auto-generated method stubList<Student> mList=new ArrayList<Student>();for (int j = 0; j < i; j++) {Student student=new Student(j, "Item"+j, "This is intruduce for Item  "+j+"; While test the demo ,we will go to do sth. Teacher tell me must be a good student");mList.add(student);}return mList;}private void initial() {// TODO Auto-generated method stub/*arr=new Integer[]{12221,12222,12223,12224,12225,122216};groupAdater=new NewsAdapter(this, arr);*//*adapter=new StudentAdapter1(this, list);*/adapter=new StudentAdapter2(this, list);mListView.setAdapter(adapter);}}

0 0