XListView的多布局优化

来源:互联网 发布:wps不能使用数据透视表 编辑:程序博客网 时间:2024/06/04 00:49
相信很多人都很习惯使用list view,因为它的有点有很多,但今天介绍一下XListView的使用,相信很多人已经使用过,只是菜鸟我才知道,废话不多说了, 

一.github地址

https://github.com/Maxwin-z/XListView-Android

二.使用 
1.首先将这三个类导入到你的工程中:

这里写图片描述

2.MainActivity的布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.administrator.xlistviewdemo.MainActivity">    <com.example.administrator.xlistviewdemo.view.XListView        android:id="@+id/xlistview"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:cacheColorHint="#00000000"        android:scrollbars="none" /></RelativeLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3.MainActivity中:

public class MainActivity extends Activity implements XListView.IXListViewListener {    private XListView mListView;    private ArrayList<String> datas;    private Handler mHandler;    private MainAdapter mainAdapter;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mListView = (XListView) findViewById(R.id.xlistview);        mainAdapter = new MainAdapter(this);        datas = new ArrayList<>();        mHandler = new Handler();        //设置数据        geneItems();        //可使用上拉刷新        mListView.setPullLoadEnable(true);        mListView.setAdapter(mainAdapter);        mListView.setXListViewListener(this);        //设置item的点击事件        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {                //这里的i-1,是因为头视图占了一个position                Toast.makeText(MainActivity.this, "i:" + (i - 1), Toast.LENGTH_SHORT).show();            }        });        //设置长按事件        mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {            @Override            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {                Toast.makeText(MainActivity.this, "长按事件 i:" + (i-1), Toast.LENGTH_SHORT).show();                return false;            }        });        //添加头布局        View view = getLayoutInflater().inflate(R.layout.head_view, null);        mListView.addHeaderView(view);        //添加尾视图        View view2 = getLayoutInflater().inflate(R.layout.head_view, null);        mListView.addFooterView(view2);        //设置禁止上拉        //mListView.setPullLoadEnable(false);        //设置禁止下拉        //mListView.setPullRefreshEnable(false);    }    private void geneItems() {        for (int i = 0; i <= 20; i++) {            datas.add("refresh item " + i);        }        mainAdapter.setDatas(datas);    }    //下拉刷新    @Override    public void onRefresh() {        mHandler.postDelayed(new Runnable() {            @Override            public void run() {                datas.clear();                geneItems();                // mAdapter.notifyDataSetChanged();                mainAdapter = new MainAdapter(MainActivity.this);                mainAdapter.setDatas(datas);                mListView.setAdapter(mainAdapter);                onLoad();            }        }, 2000);    }    //上拉加载    @Override    public void onLoadMore() {        mHandler.postDelayed(new Runnable() {            @Override            public void run() {                geneItems();                mainAdapter.notifyDataSetChanged();                onLoad();            }        }, 2000);    }
xlv.stopRefresh();//停止刷新xlv.stopLoadMore();//停止加载
private void onLoad() { mListView.stopRefresh(); mListView.stopLoadMore();//获取当前时间 Date curDate =new Date(System.currentTimeMillis());//格式化 SimpleDateFormat formatter =new SimpleDat}); String time = formatter.format(curDate); mListView.setRefreshTime(time); } }
4.Adapter适配器中
package com.example.lenovo.xlistviewbegin;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;import static android.R.attr.type;
public class MyAdapter extends BaseAdapter {    private Context context;    private List<NewsBean> list;   private final  int atype=0;//第一种布局    private final int btype=1;//第二种布局    public MyAdapter(Context context,List<NewsBean> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int i) {        return list.get(i);    }    @Override    public long getItemId(int i) {        return 0;    }     //定义布局类型    @Override    public int getItemViewType(int position) {        //如果为偶数的话,取atype类型        if(position%2==0)        {            return atype;        }        else        {            return btype;        }    }   //定义布局数量    @Override    public int getViewTypeCount() {        return 2;    }    @Override    public View getView(int i, View view, ViewGroup viGroup) {        //根据position获取布局类型        int type = getItemViewType(i);        ViewHolder1 holder1=null;        ViewHolder2 holder2=null;        if(view==null) {            switch (type) {                case atype:                    holder1 = new ViewHolder1();                    view = View.inflate(context, R.layout.item1, null);                    view.setTag(holder1);                    holder1.iv1 = view.findViewById(R.id.iv1);                    holder1.tv1 = view.findViewById(R.id.tv1);                    break;                  case btype:                    holder2 = new ViewHolder2();                    view = View.inflate(context, R.layout.item2, null);                    view.setTag(holder2);                    holder2.iv2 = view.findViewById(R.id.iv2);                    holder2.tv2 = view.findViewById(R.id.tv2);                    break;            }        }        else        {            switch (type)            {                case atype:                    holder1=(ViewHolder1) view.getTag();                    break;                case btype:                    holder2=(ViewHolder2) view.getTag();                    break;            }        }        switch (type)        {              case atype:                holder1.tv1.setText(list.get(i).getTitle());                ImageLoader.getInstance().displayImage(list.get(i).getImag(),holder1.iv1);                break;               case btype:                holder2.tv2.setText(list.get(i).getTitle());                ImageLoader.getInstance().displayImage(list.get(i).getImag(),holder2.iv2);                break;        }       return view;    }    class ViewHolder1    {      public ImageView iv1;       public TextView tv1;    }    class ViewHolder2    {        public ImageView iv2;        public TextView tv2;    }}
原创粉丝点击