效果图
上拉加载第一个页面
下拉加载下一个页面
主界面布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="80dp" />
</android.support.constraint.ConstraintLayout>
主界面
package com.example.lianxi08;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import me.maxwin.view.XListView;
public class MainActivity extends AppCompatActivity {
private XListView mListView;
private MyBaseAdapter adapter;
private int mPage =1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
mListView = findViewById( R.id.list_view );
adapter = new MyBaseAdapter( MainActivity.this );
mListView.setAdapter( adapter );
initData();
//允许上拉刷新下拉加载
mListView.setPullRefreshEnable( true );
mListView.setPullLoadEnable( true );
//listview监听
mListView.setXListViewListener( new XListView.IXListViewListener() {
@Override
public void onRefresh() {
mPage=1;
initData();
}
@Override
public void onLoadMore() {
initData();
mPage++;
}
} );
}
@SuppressLint("StaticFieldLeak")
private void initData() {
new AsyncTask<Void, Void, List<String>>() {
@Override
protected List<String> doInBackground(Void... voids) {
SystemClock.sleep( 3000 );
String time = new Date().toLocaleString();
List<String> list = new ArrayList<>( );
for (int i = 0; i <10 ; i++) {
list.add( time+"第"+mPage+"页"+i );
}
return list;
}
@Override
protected void onPostExecute(List<String> strings) {
if (mPage==1){
adapter.setList( strings );
}else {
adapter.addList( strings );
}
mListView.stopLoadMore();
mListView.stopRefresh();
}
}.execute( );
}
}
adapter刷新
package com.example.lianxi08;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MyBaseAdapter extends BaseAdapter {
private List<String> list;
private Context context;
public MyBaseAdapter(Context context) {
this.context = context;
list = new ArrayList<>( );
}
public void setList(List<String> list1) {
list.clear();
list.addAll( list1);
notifyDataSetChanged();
}
public void addList(List<String> list1) {
list.addAll( list1);
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public String getItem(int position) {
return list.get( position );
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView==null){
convertView = LayoutInflater.from( context ).inflate( R.layout.item,parent,false );
holder= new ViewHolder(convertView);
}else {
holder= (ViewHolder) convertView.getTag();
}
holder.setData(getItem( position ));
return convertView;
}
class ViewHolder{
TextView textView;
public ViewHolder(View convertView) {
textView =convertView.findViewById( R.id.text1 );
convertView.setTag(this);
}
public void setData(String item) {
textView.setText( item );
}
}
}
导入module
导入xlistview