listView下拉重新整理,分頁載入(無更多資料時新增底線)
阿新 • • 發佈:2019-01-06
package com.example.yjyg.mytourismnote.Activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.dinuscxj.refresh.RecyclerRefreshLayout; import com.example.yjyg.mytourismnote.R; import com.example.yjyg.mytourismnote.Widget.MyLoadListView; import com.example.yjyg.mytourismnote.Widget.RefreshViewEg; import java.util.ArrayList; import java.util.List; public class GroupListAndRefreshActivity extends AppCompatActivity { private MyLoadListView list; private RecyclerRefreshLayout layout; private List<String> data = new ArrayList<String>(); private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_group_list_and_refresh); list = (MyLoadListView) findViewById(R.id.list); layout = (RecyclerRefreshLayout) findViewById(R.id.layout); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( (int) dip2px(this, 40), (int) dip2px(this, 40)); layout.setRefreshView(new RefreshViewEg(this), layoutParams);//RefreshViewEg為下拉重新整理控制元件中的自定義頭部類,詳細用法參考此控制元件用法 layout.setRefreshStyle(RecyclerRefreshLayout.RefreshStyle.NORMAL); //重新整理監聽設定 adapter = new MyAdapter(this); list.setAdapter(adapter); getData(); layout.setOnRefreshListener(new RecyclerRefreshLayout.OnRefreshListener() { @Override public void onRefresh() {//重新整理 //取消重新整理動畫 layout.setRefreshing(false); //清空資料 data.clear(); //重新獲取資料 getData(); } }); list.setLoadListener(new MyLoadListView.IsloadListener() { @Override public void onLoad() {//載入更多 new Handler().postDelayed(new Runnable() { @Override public void run() { getDataMore(); // adapter.setData(data); } }, 1000); } }); } private void getData() { for (int i = 0; i < 20; i++) { data.add(System.currentTimeMillis() + "首次載入==" + i); } adapter.setData(data); if (data.size()<=10){ list.loadComplete(); }else{ list.loadReset(); } } private void getDataMore() { if (data.size() > 60) { list.loadComplete(); } else { for (int i = 0; i < 20; i++) { data.add(System.currentTimeMillis() + "更多載入==" + i); } adapter.setData(data); } } public class MyAdapter extends BaseAdapter { private List<String> data; private LayoutInflater inflater; private Context mContext; public MyAdapter(Context context) { this.mContext = context; data = new ArrayList<String>(); this.inflater = LayoutInflater.from(context); } public void setData(List<String> mData) { data.clear(); data.addAll(mData); this.notifyDataSetChanged(); } @Override public int getCount() { return data.size(); } @Override public String getItem(int position) { return data.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 = inflater.inflate(R.layout.item_text, null); holder = new ViewHolder(); /*得到各個控制元件的物件*/ holder.text = (TextView) convertView.findViewById(R.id.text); convertView.setTag(holder); //繫結ViewHolder物件 } else { holder = (ViewHolder) convertView.getTag(); //取出ViewHolder物件 } holder.text.setText(data.get(position)); return convertView; } } /*存放控制元件 的ViewHolder*/ public final class ViewHolder { public TextView text; } public static float dip2px(Context context, float dpValue) { float scale = context.getResources().getDisplayMetrics().density; return dpValue * scale; } }