SwipeRefreshLayout, work with RecyclerView

SwipeRefreshLayout, work with RecyclerView - Hello Friend GENERAL INFO FOR ANDROID DEVELOPMENT, In the article you read this time with the title SwipeRefreshLayout, work with RecyclerView, We have prepared this article for you to read and retrieve information there in. Hopefully the contents of postings Artikel Android code sample: SwipeRefreshLayout, Artikel RecyclerView, We write this you can understand. Alright, good read.

The Title : SwipeRefreshLayout, work with RecyclerView
link : SwipeRefreshLayout, work with RecyclerView

Read also


SwipeRefreshLayout, work with RecyclerView


Last two post show "Simple example of using SwipeRefreshLayout" and "SwipeRefreshLayout, refresh in background thread", target to ListView.

This example show how SwipeRefreshLayout work with RecyclerView (reference: step-by-step of using RecyclerView).


To use RecyclerView in your Android Studio project, you have to Add Support Libraries of RecyclerView as dependencies.


Create layout/layout_item.xml, to define the layout of RecyclerView 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="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="28dp"/>

</LinearLayout>

Create a new class, RecyclerViewAdapter.java.
package com.blogspot.android_er.androidswiperefresh;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

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

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ItemHolder>{

private List<String> itemsList;
private OnItemClickListener onItemClickListener;
private LayoutInflater layoutInflater;

public RecyclerViewAdapter(Context context){
layoutInflater = LayoutInflater.from(context);
itemsList = new ArrayList<String>();
}

@Override
public ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = layoutInflater.inflate(R.layout.layout_item, parent, false);
return new ItemHolder(itemView, this);
}

@Override
public void onBindViewHolder(ItemHolder holder, int position) {
holder.setItemText(itemsList.get(position));
}

@Override
public int getItemCount() {
return itemsList.size();
}

public void setOnItemClickListener(OnItemClickListener listener){
onItemClickListener = listener;
}

public OnItemClickListener getOnItemClickListener(){
return onItemClickListener;
}

public interface OnItemClickListener{
public void onItemClick(ItemHolder item, int position);
}

public void add(int location, String iString){
itemsList.add(location, iString);
notifyItemInserted(location);
}

public void set(int location, String iString){
itemsList.set(location, iString);
notifyItemChanged(location);
}

public void clear(){
itemsList.clear();
notifyDataSetChanged();
}

public static class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

private RecyclerViewAdapter parent;
TextView textItemText;

public ItemHolder(View itemView, RecyclerViewAdapter parent) {
super(itemView);
itemView.setOnClickListener(this);
this.parent = parent;
textItemText = (TextView) itemView.findViewById(R.id.item_text);
}

public void setItemText(CharSequence itemString){
textItemText.setText(itemString);
}

public CharSequence getItemText(){
return textItemText.getText();
}

@Override
public void onClick(View v) {
final OnItemClickListener listener = parent.getOnItemClickListener();
if(listener != null){
listener.onItemClick(this, getAdapterPosition());
}
}
}
}


Modify layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.blogspot.android_er.androidswiperefresh.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />

<Button
android:id="@+id/clearall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Clear All"/>

<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swiperefreshlayout"
android:layout_height="match_parent"
android:layout_width="match_parent">

<android.support.v7.widget.RecyclerView
android:id="@+id/myrecyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>


MainActivity.java
package com.blogspot.android_er.androidswiperefresh;

import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.text.DateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity implements RecyclerViewAdapter.OnItemClickListener{

SwipeRefreshLayout swipeRefreshLayout;
Button btnClearAll;

private RecyclerView myRecyclerView;
private LinearLayoutManager linearLayoutManager;
private RecyclerViewAdapter myRecyclerViewAdapter;

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

swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swiperefreshlayout);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
refresh();
}
});
btnClearAll = (Button)findViewById(R.id.clearall);
btnClearAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//In order to prevent the racing condition of updating removed item in refreshing,
//disable "Clear All" if refreshing
if(!swipeRefreshLayout.isRefreshing()){
myRecyclerViewAdapter.clear();
}
}
});

myRecyclerView = (RecyclerView)findViewById(R.id.myrecyclerview);
linearLayoutManager =
new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
myRecyclerViewAdapter = new RecyclerViewAdapter(this);
myRecyclerViewAdapter.setOnItemClickListener(this);
myRecyclerView.setAdapter(myRecyclerViewAdapter);
myRecyclerView.setLayoutManager(linearLayoutManager);

}

private void refresh(){

final int pos = myRecyclerViewAdapter.getItemCount();
myRecyclerViewAdapter.add(pos, "Refreshing...");
swipeRefreshLayout.setRefreshing(true);

//refresh long-time task in background thread
new Thread(new Runnable() {
@Override
public void run() {
try {
//dummy delay for 2 second
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}

//update ui on UI thread
runOnUiThread(new Runnable() {
@Override
public void run() {
String currentDateTime =
DateFormat.getDateTimeInstance().format(new Date());

myRecyclerViewAdapter.set(pos, pos + " - " + currentDateTime);
swipeRefreshLayout.setRefreshing(false);
}
});

}
}).start();
}

@Override
public void onItemClick(RecyclerViewAdapter.ItemHolder item, int position) {
Toast.makeText(this,
position + " : " + item.getItemText(),
Toast.LENGTH_SHORT).show();
}
}



download filesDownload the files .



Thus Article SwipeRefreshLayout, work with RecyclerView

The End Article SwipeRefreshLayout, work with RecyclerView This time, hopefully can give benefits to all of you. well, see you in posting other articles.

You are now reading the article SwipeRefreshLayout, work with RecyclerView with the link address http://xorislogo.blogspot.com/2016/05/swiperefreshlayout-work-with.html

0 Response to "SwipeRefreshLayout, work with RecyclerView"

Post a Comment