相信很多人都很习惯使用list view,因为它的有点有很多,但今天介绍一下XListView的使用,相信很多人已经使用过,只是菜鸟我才知道,废话不多说了,
一.github地址
二.使用
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>
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);
}
private void onLoad() {
mListView.stopRefresh();
mListView.stopLoadMore();
//获取当前时间
Date curDate = new Date(System.currentTimeMillis());
//格式化
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String time = formatter.format(curDate);
mListView.setRefreshTime(time);
}
}
4.MainAdapter中:
public class MainAdapter extends BaseAdapter {
private Context context;
private ArrayList<String> datas;
public MainAdapter(Context context) {
this.context = context;
}
public void setDatas(ArrayList<String> datas) {
this.datas = datas;
notifyDataSetChanged();
}
@Override
public int getCount() {
return datas != null ? datas.size() : 0;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
MyViewHolder myViewHolder = null;
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.list_item, viewGroup, false);
myViewHolder = new MyViewHolder(view);
view.setTag(myViewHolder);
}else {
myViewHolder = (MyViewHolder) view.getTag();
}
//设置数据
myViewHolder.textView.setText(datas.get(i));
return view;
}
class MyViewHolder {
private TextView textView;
MyViewHolder(View itemView) {
textView = (TextView) itemView.findViewById(R.id.list_item_textview);
}
}
}
5.item的布局文件
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/list_item_textview"
android:textSize="16sp"
android:textColor="#000"
android:padding="5dp">
</TextView>
6.头布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@drawable/headiv" />
</LinearLayout>
7.效果图如下
8.下载地址
本人菜鸟一个,有什么不对的地方,希望大家指出评论,大神勿喷,希望大家一起学习进步!