《Xlistview 展示下拉重新整理資料》
//主佈局介面
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=".MainActivity">
<me.maxwin.view.XListView android:id="@+id/news" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
//子佈局
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:padding=“16dp”>
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:text="title"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
主函式
package com.example.myapplication;
import android.os.AsyncTask;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import me.maxwin.view.XListView;
public class MainActivity extends AppCompatActivity {
private XListView news;
private int mPage;
private NewsAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPage = 1;
news = findViewById(R.id.news);
mAdapter = new NewsAdapter(this);
news.setAdapter(mAdapter);
news.setPullRefreshEnable(true);
//設定開啟載入更多
news.setPullLoadEnable(true);
news.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//重新整理
mPage = 1;
loadData();
}
@Override
public void onLoadMore() {//載入
mPage ++;
loadData();
}
});
loadData();
}
private void loadData() {
new AsyncTask<Void, Void, List<String>>(){
@Override
protected List<String> doInBackground(Void... voids) {
SystemClock.sleep(1000);
List<String> result = new ArrayList<>();
String pre = new Date().toLocaleString();
for (int i = 0; i < 30; i++) {
result.add(pre + "第" + mPage + "頁" + i);
}
return result;
}
@Override
protected void onPostExecute(List<String> strings) {
if(mPage == 1) {
mAdapter.setDatas(strings);
} else {
mAdapter.addDatas(strings);
}
//告訴XListView停止重新整理/載入
news.stopRefresh();
news.stopLoadMore();
}
}.execute();
}
}
//介面卡
package com.example.myapplication;
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 NewsAdapter extends BaseAdapter {
private List<String> mDatas;
private Context mContext;
public NewsAdapter(Context context) {
mContext = context;
mDatas = new ArrayList<>();
}
//更新資料
public void setDatas(List<String> datas) {
///////////////
//mDatas = datas;
//清
mDatas.clear();
//新增新的
mDatas.addAll(datas);
notifyDataSetChanged();
}
//追加資料
public void addDatas(List<String> datas) {
//mDatas = datas;
//追加所有資料
mDatas.addAll(datas);
/* for (String tmp:datas) {
mDatas.add(tmp);
}*/
notifyDataSetChanged();
}
@Override
public int getCount() {
return mDatas.size();
}
@Override
public String getItem(int position) {
return mDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item, parent, false);
viewHolder = new ViewHolder(convertView);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.bindData(getItem(position));
return convertView;
}
class ViewHolder {
TextView textView;
public ViewHolder(View itemView) {
this.textView = itemView.findViewById(R.id.title);
itemView.setTag(this);
}
public void bindData(String title) {
textView.setText(title);
}
}
}
//許可權
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>