Created
May 27, 2019 05:00
-
-
Save mebjas/9831a1635c4057c7ba334794d72a3589 to your computer and use it in GitHub Desktop.
reference to creating recyclerView in java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright (C) 2016 The Android Open Source Project | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package com.example.android.recyclerview; | |
import android.content.Context; | |
import android.support.v7.widget.RecyclerView; | |
import android.util.Log; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.TextView; | |
/** | |
* We couldn't come up with a good name for this class. Then, we realized | |
* that this lesson is about RecyclerView. | |
* | |
* RecyclerView... Recycling... Saving the planet? Being green? Anyone? | |
* #crickets | |
* | |
* Avoid unnecessary garbage collection by using RecyclerView and ViewHolders. | |
* | |
* If you don't like our puns, we named this Adapter GreenAdapter because its | |
* contents are green. | |
*/ | |
public class GreenAdapter extends RecyclerView.Adapter<GreenAdapter.NumberViewHolder> { | |
private static final String TAG = GreenAdapter.class.getSimpleName(); | |
private int mNumberItems; | |
/** | |
* Constructor for GreenAdapter that accepts a number of items to display and the specification | |
* for the ListItemClickListener. | |
* | |
* @param numberOfItems Number of items to display in list | |
*/ | |
public GreenAdapter(int numberOfItems) { | |
mNumberItems = numberOfItems; | |
} | |
/** | |
* | |
* This gets called when each new ViewHolder is created. This happens when the RecyclerView | |
* is laid out. Enough ViewHolders will be created to fill the screen and allow for scrolling. | |
* | |
* @param viewGroup The ViewGroup that these ViewHolders are contained within. | |
* @param viewType If your RecyclerView has more than one type of item (which ours doesn't) you | |
* can use this viewType integer to provide a different layout. See | |
* {@link android.support.v7.widget.RecyclerView.Adapter#getItemViewType(int)} | |
* for more details. | |
* @return A new NumberViewHolder that holds the View for each list item | |
*/ | |
@Override | |
public NumberViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { | |
Context context = viewGroup.getContext(); | |
int layoutIdForListItem = R.layout.number_list_item; | |
LayoutInflater inflater = LayoutInflater.from(context); | |
boolean shouldAttachToParentImmediately = false; | |
View view = inflater.inflate(layoutIdForListItem, viewGroup, shouldAttachToParentImmediately); | |
NumberViewHolder viewHolder = new NumberViewHolder(view); | |
return viewHolder; | |
} | |
/** | |
* OnBindViewHolder is called by the RecyclerView to display the data at the specified | |
* position. In this method, we update the contents of the ViewHolder to display the correct | |
* indices in the list for this particular position, using the "position" argument that is conveniently | |
* passed into us. | |
* | |
* @param holder The ViewHolder which should be updated to represent the contents of the | |
* item at the given position in the data set. | |
* @param position The position of the item within the adapter's data set. | |
*/ | |
@Override | |
public void onBindViewHolder(NumberViewHolder holder, int position) { | |
Log.d(TAG, "#" + position); | |
holder.bind(position); | |
} | |
/** | |
* This method simply returns the number of items to display. It is used behind the scenes | |
* to help layout our Views and for animations. | |
* | |
* @return The number of items available in our forecast | |
*/ | |
@Override | |
public int getItemCount() { | |
return mNumberItems; | |
} | |
class NumberViewHolder extends RecyclerView.ViewHolder | |
{ | |
TextView listItemNumberView; | |
public NumberViewHolder(View itemView) { | |
super(itemView); | |
listItemNumberView = (TextView) itemView.findViewById(R.id.tv_item_number); | |
} | |
public void bind(int listIndex) { | |
listItemNumberView.setText(Integer.toString(listIndex)); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment