相信很多人都很习惯使用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); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 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); } 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(); 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; }}