Using RecyclerView, we have to be mind about two important aspects i.e
1. RecyclerView.ViewHolder
2. RecyclerView.Adapter
My DemoApp Structure goes like this :
We will be using android Studio here.
And Few properties of RecyclerView which i will discuss after code.
So you might have to write something like this to run RecyclerView.
1. RecyclerViewActivity.java
public class RecyclerViewActivity extends Activity {2. RecyclerViewAdapter.java
ArrayList<String>mListitems;
RecyclerView mRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initiView();
}
private void initiView(){
mListitems=new ArrayList<String>();
for(int i=0;i<125;i++){
mListitems.add("List Item "+ i);
}
mRecyclerView=(RecyclerView) findViewById(R.id.recyclervew);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
//The LinearLayoutManager is currently the only default implementation of LayoutManager. You can use this class to create either vertical or horizontal lists.
LinearLayoutManager layoutManager = new LinearLayoutManager(RecyclerViewActivity.this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(layoutManager);
//Setting up ItemAnimator here
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//setting up the adapter
RecyclerViewAdapter mAdapter=new RecyclerViewAdapter(RecyclerViewActivity.this,mListitems);
mRecyclerView.setAdapter(mAdapter);
}
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewViewHolder> {3. RecyclerViewViewHolder.java
Context mContext;
ArrayList<String>mListItems;
public RecyclerViewAdapter(Context mContext,ArrayList<String>mListItems){
this.mContext=mContext;
this.mListItems=mListItems;
}
@Override
public RecyclerViewViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View itemView = LayoutInflater
.from(viewGroup.getContext())
.inflate(R.layout.row_recyclerview, viewGroup, false);
return new RecyclerViewViewHolder(itemView);
}
@Override
public void onBindViewHolder(RecyclerViewViewHolder recyclerViewViewHolder, int i) {
recyclerViewViewHolder.txtView.setText(mListItems.get(i));
}
@Override
public int getItemCount() {
return mListItems.size();
}
}
public class RecyclerViewViewHolder extends RecyclerView.ViewHolder {
public TextView txtView;
public RecyclerViewViewHolder(View itemView) {
super(itemView);
txtView = (TextView) itemView.findViewById(R.id.title);
}
}
XML files now :
1. activity_main.xml
<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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">2. row_recyclerview.xml
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/recyclervew" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
Most important file now
<?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="match_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/txtview" android:text="Demo recyclerView" android:padding="10dp" android:textColor="@android:color/holo_red_dark" /> </LinearLayout>
In App folder : build.gradle
Starts from here :>>>>
apply plugin: 'com.android.application'
android { compileSdkVersion 22 buildToolsVersion "21.1.2"
defaultConfig { applicationId "com.example.kamalvaid.recyclerview" minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.0' compile 'com.android.support:recyclerview-v7:21.0.0'
}
Now there are using few properties listed below those purpose should be clear
1. mRecyclerView.setHasFixedSize(true); => use this setting to improve performance if you know that changes in content do not change the layout size of the RecyclerView
2. LinearlayoutManager => The LinearLayoutManager is currently the only default implementation of LayoutManager. You can use this class to create either vertical or horizontal lists.
And we are using like this
LinearLayoutManager layoutManager = new LinearLayoutManager(RecyclerViewActivity.this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.setOrientation(LinearLayoutManager.Horizontal);
Also RecyclerView doesn't include Divider property by default, So we have to customize it .
Also RecyclerView doesn't include Divider property by default, So we have to customize it .
Output :
Happy Coding!!!
Cheers
No comments:
Post a Comment