cymcsg / UltimateRecyclerView

A RecyclerView(advanced and flexible version of ListView in Android) with refreshing,loading more,animation and many other features.
Apache License 2.0
7.22k stars 1.43k forks source link

setLoadMore and setOnLoadMoreListener #351

Open imgod1 opened 8 years ago

imgod1 commented 8 years ago

`package com.example.gaokang.testultimaterecycleview;

import android.os.Handler; import android.os.Message; import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import android.widget.Toast;

import com.marshalchen.ultimaterecyclerview.UltimateRecyclerView;

import java.util.ArrayList; import java.util.List;

public class MainActivity extends AppCompatActivity {

public static final int REFRESH = 0;
public static final int LOADMORE = 1;

private int count = 0;
private UltimateRecyclerView recycleview;
private List<String> titles;
private MyAdapter adapter;

public Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what) {
            case REFRESH:
                recyclerView_Refresh();
                recycleview.setRefreshing(false);
                break;
            case LOADMORE:
                recyclerView_LoadMore();
                break;
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initData();
}

private void initData() {
    titles = new ArrayList<>();
    adapter = new MyAdapter(this, titles);
    for (count = 0; count < 20; count++) {
        titles.add("this is title:" + count);
    }
    recycleview.setAdapter(adapter);

// adapter.notifyDataSetChanged(); }

private void initView() {
    recycleview = (UltimateRecyclerView) findViewById(R.id.recycleview);
    recycleview.setLayoutManager(new LinearLayoutManager(this));
    recycleview.reenableLoadmore();
    recycleview.enableDefaultSwipeRefresh(true);
    //刷新监听
    recycleview.setDefaultOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            handler.sendEmptyMessageDelayed(REFRESH, 2000);
        }
    });

    recycleview.setLoadMoreView(R.layout.custom_bottom_progressbar);
    //加载更多监听
    recycleview.setOnLoadMoreListener(new UltimateRecyclerView.OnLoadMoreListener() {
        @Override
        public void loadMore(int itemsCount, int maxLastVisiblePosition) {
            Log.e("loadMore", "触发了加载更多");
            handler.sendEmptyMessageDelayed(LOADMORE, 1000);
        }
    });
}

//刷新操作
private void recyclerView_Refresh() {
    titles.clear();
    for (count = 0; count < 20; count++) {
        titles.add("this is a new title after refresh:" + count);
    }
    adapter.notifyDataSetChanged();
}

//加载更多操作
private void recyclerView_LoadMore() {
    int max_num = count + 20;
    for (; count < max_num; count++) {
        titles.add("this is a new title after load more:" + count);
    }
    adapter.notifyDataSetChanged();
}

} ` Run the app, not the beginning of pull load more, but once the drop after the refresh response can be loaded and pull more display settings LoadMoreView

jjhesk commented 8 years ago

please do u use not your own adapter but u have to extend your adapter based on easyRegularAdapter

imgod1 commented 8 years ago

@jjhesk I follow your advice, but the problem still exists. package com.example.gaokang.testultimaterecycleview;

import android.view.View; import android.widget.TextView;

import com.marshalchen.ultimaterecyclerview.UltimateRecyclerviewViewHolder; import com.marshalchen.ultimaterecyclerview.quickAdapter.easyRegularAdapter;

import java.util.List;

/**