Giter Site home page Giter Site logo

xrecyclerviewlayout's Introduction

XRecyclerViewLayout

Screenshots

###1、Refreshing

###2、Pull down to refresh

###3、Loading more

###4、No more

Useage

###1、activity_xrecycler.xml

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="#2cb1e1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="XRcyclerView"
        android:textColor="@android:color/white"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/btn_clear_data"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="10dp"
        android:gravity="center_vertical"
        android:text="Clear Data"
        android:textColor="@android:color/white"
        android:textSize="14sp"/>

</RelativeLayout>

<org.jsc.xrecyclerviewlayout.XRecyclerViewLayout
    android:id="@+id/recycler_view_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

###2、XRecyclerActivity
public class XRecyclerActivity extends AppCompatActivity {

private XRecyclerView mXRecyclerView;
private TextView tvClearData;

private MyAdapter mAdapter;

private List<String> listData;
private int refreshTime;
private int times;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_xrecycler);

    tvClearData = (TextView) findViewById(R.id.btn_clear_data);
    tvClearData.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            listData.clear();
            mAdapter.notifyDataSetChanged();
            mXRecyclerView.isHaveMore(false);
            mXRecyclerView.showEmptyView(EmptyView.EmptyStatus.EMPTY_ERROR, "Clear data!");
        }
    });

    XRecyclerViewLayout recyclerViewLayout = (XRecyclerViewLayout) findViewById(R.id.recycler_view_layout);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mXRecyclerView = recyclerViewLayout.getRecyclerView();
    mXRecyclerView.setLayoutManager(layoutManager);
    mXRecyclerView.setHeadView(getLayoutInflater().inflate(R.layout.head_view_layout, null));
    mXRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
        @Override
        public void onRefresh() {
            refreshTime ++;
            times = 0;
            new Handler().postDelayed(new Runnable(){
                public void run() {

                    listData.clear();
                    for(int i = 0; i < 15 ;i++){
                        listData.add("item" + i + "after " + refreshTime + " times of refresh");
                    }
                    mXRecyclerView.refreshComplete();
                    mAdapter.notifyDataSetChanged();
                    mXRecyclerView.isHaveMore(15, 15);
                }

            }, 2000);            //refresh data here
        }

        @Override
        public void onLoadMore() {
            if(times < 2){
                new Handler().postDelayed(new Runnable(){
                    public void run() {
                        for(int i = 0; i < 15 ;i++){
                            listData.add("item" + (1 + listData.size() ) );
                        }
                        mXRecyclerView.loadMoreComplete();
                        mAdapter.notifyDataSetChanged();
                        mXRecyclerView.isHaveMore(9, 9);
                    }
                }, 1000);
            } else {
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        for(int i = 0; i < 8 ;i++){
                            listData.add("item" + (1 + listData.size() ) );
                        }
                        mXRecyclerView.loadMoreComplete();
                        mAdapter.notifyDataSetChanged();
                        mXRecyclerView.isHaveMore(8, 9);
                    }
                }, 1000);
            }
            times ++;
        }
    });
    mXRecyclerView.setItemClickListener(new XRecyclerView.ItemClickListener() {
        @Override
        public void onRecyclerViewItemClick(View view, int LayoutPosition, int DataPosition) {
            String data = mAdapter.getItem(DataPosition);
            showShortToast("item click: " + DataPosition + " --> " + data);
        }
    });
    mXRecyclerView.setItemLongClickListener(new XRecyclerView.ItemLongClickListener() {
        @Override
        public void onRecyclerViewItemLongClick(View view, int LayoutPosition, int DataPosition) {
            String data = mAdapter.getItem(DataPosition);
            showShortToast("item long click: " + DataPosition + " --> " + data);
        }
    });
    listData = new ArrayList<>();
    mAdapter = new MyAdapter(listData);

    mXRecyclerView.setAdapter(mAdapter);
    mXRecyclerView.setRefreshing(true);
}


private void showShortToast(String txt){
    Toast.makeText(this, txt, Toast.LENGTH_SHORT).show();
}

}

###3、Important methods of XRecyclerView
//Set listener (pull down to refresh and pull up to load more). ####public void setLoadingListener(LoadingListener listener) //item click listener ####public void setItemClickListener(ItemClickListener itemClickListener) //item long click listener ####public void setItemLongClickListener(ItemLongClickListener itemLongClickListener) //Is loading data. ####public boolean isLoadingData() ####public void setItemClickable(boolean itemClickable) ####public void setItemLongClickable(boolean itemLongClickable) ####public void setRefreshing(boolean refreshing) ####public void refreshComplete() ####public void loadMoreComplete() ####public void isHaveMore(int count, int total) ####public void isHaveMore(boolean haveMore) ####public void setPullRefreshEnabled(boolean enabled) ####public void setLoadingMoreEnabled(boolean enabled)

##XRecyclerView https://github.com/jianghejie/XRecyclerView

xrecyclerviewlayout's People

Contributors

justinroom avatar

Stargazers

Adaclass avatar ppp avatar Tim Huang avatar  avatar

Watchers

James Cloos avatar  avatar

xrecyclerviewlayout's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.