简单ListView列表,就用简单的写法

来源:互联网 发布:js怎么获取数据库数据 编辑:程序博客网 时间:2024/06/04 19:02

有些时候,我们的列表是简单的,甚至单一的item,没有太多交互,但是没写一个界面都写一次adapter,实在感觉有点费事,所以必要时可以抽出来

BaseAdapter

package com.forens.xuan.forkit.adapter;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import com.forens.xuan.forkit.viewholder.BaseViewHolder;import java.util.List;/** * Project_Name:    ForKit * Copyright:        * Created:         dake.xuan on 2017/4/26 10:38 * E-mail:          dake.xuan@g-emall.com * Desc: */public class ForAdapter<T> extends BaseAdapter{    private List<T> tList;    private BaseViewHolder viewHolder;    public ForAdapter(BaseViewHolder viewHolder) {        this.viewHolder = viewHolder;    }    @Override    public int getCount() {        if (tList != null)            return tList.size();        else return 0;    }    public void settList(List<T> tList) {        this.tList = tList;    }    @Override    public Object getItem(int position) {        return tList.get(position);    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        if (convertView == null) {            if(viewHolder!=null){                convertView=viewHolder.onViewCread(position,convertView,parent);                convertView.setTag(viewHolder);                viewHolder.onBindViewData(position,tList.get(position));            }else {                Log.e("ForAdapter","ViewHolder is null");            }        }else {            BaseViewHolder viewHolder2= (BaseViewHolder) convertView.getTag();            viewHolder2.onBindViewData(position,tList.get(position));        }        return convertView;    }}

package com.forens.xuan.forkit.viewholder;import android.view.View;import android.view.ViewGroup;/** * Project_Name:    ForKit * Copyright:        * Created:         dake.xuan on 2017/4/26 11:38 * E-mail:          dake.xuan@g-emall.com * Desc: */public abstract class BaseViewHolder<T> {    public abstract View onViewCread(int position, View convertView, ViewGroup parent);    public abstract void onBindViewData(int position,T t1);}

那么 每次写一个列表界面就只需要写一个ViewHolder

package com.forens.xuan.forkit.viewholder;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.forens.xuan.forkit.R;import com.forens.xuan.forkit.bean.BaseBean;/** * Project_Name:    ForKit * Copyright:        * Created:         dake.xuan on 2017/4/26 11:34 * E-mail:          dake.xuan@g-emall.com * Desc: */public class TestViewHolder extends BaseViewHolder<BaseBean>{    private TextView textViewName;    private Context context;    public TestViewHolder(Context context) {        this.context = context;    }    @Override    public View onViewCread(int position, View convertView, ViewGroup parent) {        convertView = LayoutInflater.from(context).inflate(R.layout.item_test, parent, false);        textViewName= (TextView) convertView.findViewById(R.id.tv_test_name);        return convertView;    }    @Override    public void onBindViewData(int position, BaseBean t1) {        textViewName.setText(t1.getName());    }}

然后使用它

package com.forens.xuan.forkit;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import com.forens.xuan.forkit.adapter.ForAdapter;import com.forens.xuan.forkit.bean.BaseBean;import com.forens.xuan.forkit.viewholder.TestViewHolder;import java.util.ArrayList;import java.util.List;public class TestListViewActivity extends AppCompatActivity {    private ListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test_list_view);        mListView= (ListView) findViewById(R.id.lv_test_listView1);        ForAdapter<BaseBean> adapter=new ForAdapter<>(new TestViewHolder(this));        List<BaseBean> list=new ArrayList<>();        for (int i=0;i<10;i++){            BaseBean baseBean=new BaseBean();            baseBean.setName("名字"+i);            list.add(baseBean);        }        adapter.settList(list);        mListView.setAdapter(adapter);    }}





0 0
原创粉丝点击