XListView展示(死資料)
阿新 • • 發佈:2018-12-20
//主頁面
package com.example.xlist; import android.annotation.SuppressLint; import android.os.AsyncTask; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.xlistview2.me.maxwin.view.XListView; import java.util.ArrayList; import java.util.Date; import java.util.List; public class MainActivity extends AppCompatActivity { private XListView news; private int pager; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); news = findViewById(R.id.news); pager = 1; adapter = new MyAdapter(this); news.setAdapter(adapter); news.setPullLoadEnable(true);//支援載入(上拉) news.setPullRefreshEnable(true);//支援重新整理(下拉) //獲取 XListView 上拉下拉監聽 news.setXListViewListener(new XListView.IXListViewListener() { //重新整理 @Override public void onRefresh() { pager = 1; LoadData(); } //載入 @Override public void onLoadMore() { pager++; LoadData(); } }); //呼叫 載入資料的方法 重新整理和載入時都要呼叫這個方法 LoadData(); } //建立一個 載入資料的 方法 @SuppressLint("StaticFieldLeak") private void LoadData(){ new AsyncTask<Void,Void,List<String>>(){ @Override protected List<String> doInBackground(Void... voids) { //睡眠時間 (載入的時間) SystemClock.sleep(1000); //要新增資料 所以 例項化一個集合 //把資料都存在這個集合裡 List<String> list = new ArrayList<>(); //time 獲取當前時間 String time = new Date().toLocaleString(); for (int i = 0; i <35 ; i++) { list.add(time+"第"+pager+"頁"+"第"+i+"條資料"); } return list; } @Override protected void onPostExecute(List<String> strings) { if (pager == 1){ // 業務操作是下拉時 pager等於1 //下拉執行 setList //先清除原來的資料在新增新的資料 adapter.setList(strings); }else { //業務操作是上拉時 餘數就不斷增加了 //它執行的是載入 展示的是新的資料 adapter.addList(strings); } //停止重新整理 停止載入 //如果不寫的話 就會一直重新整理或載入資料 //所以重新整理或載入以後要先停止一下 news.stopRefresh(); news.stopLoadMore(); } }.execute(); } }
//介面卡
package com.example.xlist; 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; class MyAdapter extends BaseAdapter { private Context context; private List<String> list; public MyAdapter(Context context) { this.context = context; list = new ArrayList<>(); } //lists 這個集合裡存的就是 新載入的資料 public void setList(List<String> lists){ //下拉以後吧 原來的資料都清除 list.clear(); //之後再新增新的資料 list.addAll(lists); //重新整理 notifyDataSetChanged(); } //追加 資料 public void addList(List<String> lists){ //追加所有資料 list.addAll(lists); //重新整理 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.layout,parent,false); //例項化 ViewHolder holder = new ViewHolder(convertView); }else { holder = (ViewHolder) convertView.getTag(); } //吧集合裡的值傳給bindData()裡的 title //之後 title 會把值賦給textview holder.bindData(getItem(position)); return convertView; } //建立暫存器 class ViewHolder{ TextView textView; public ViewHolder(View ConvertView){ //載入檢視 this.textView = ConvertView.findViewById(R.id.title_title); ConvertView.setTag(this); } //建立一個方法 繫結佈局檔案中textview 的 資料 public void bindData(String title){ //給textview 進行賦值 textView.setText(title); } } }
//佈局檔案
<?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"> <com.example.xlistview2.me.maxwin.view.XListView android:id="@+id/news" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" ></com.example.xlistview2.me.maxwin.view.XListView> </android.support.constraint.ConstraintLayout> //item 佈局 <?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"> <TextView android:id="@+id/title_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="15dp" android:text="遞四方速遞" /> </LinearLayout>