1. 程式人生 > >listView下拉重新整理,分頁載入(無更多資料時新增底線)

listView下拉重新整理,分頁載入(無更多資料時新增底線)

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;
    }
}