Last active
August 29, 2015 14:25
-
-
Save poemsk/554087e0c3ad43b876d2 to your computer and use it in GitHub Desktop.
mmaug_RxSunshine_WeatherAdapter
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
package org.mmaug.rxsunshine; | |
import android.support.v7.widget.RecyclerView; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.ImageView; | |
import android.widget.TextView; | |
import com.squareup.picasso.Picasso; | |
import java.util.ArrayList; | |
import static org.mmaug.rxsunshine.Config.IMAGE_URL; | |
/** | |
* Created by poepoe on 17/7/15. | |
*/ | |
public class WeatherAdapter extends RecyclerView.Adapter<WeatherAdapter.ViewHolder> { | |
ArrayList<WeatherItem> weatherItemArrayList; | |
//Constructor | |
public WeatherAdapter() { | |
//initialized arraylist so the adapter size is zero while we wait fetching list from API. | |
weatherItemArrayList = new ArrayList<>(); | |
//This is making view holder item to have stable id. So it will not change | |
setHasStableIds(true); | |
} | |
//call this method when we have successfully got data from API | |
public void setData(ArrayList<WeatherItem> weatherItemArrayList) { | |
this.weatherItemArrayList = weatherItemArrayList; | |
//notify the adapther that array list is changed and need to update the views | |
notifyDataSetChanged(); | |
} | |
//creating new view | |
@Override public WeatherAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { | |
View view = | |
LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_weather, viewGroup, false); | |
return new ViewHolder(view); | |
} | |
//bind data to view | |
@Override public void onBindViewHolder(ViewHolder viewHolder, int i) { | |
WeatherItem item = weatherItemArrayList.get(i); | |
viewHolder.mWeatherText.setText(item.text); | |
Picasso.with(viewHolder.itemView.getContext()) | |
.load(IMAGE_URL + item.imageUrl + ".png") | |
.into(viewHolder.mWeatherImage); | |
} | |
//adapter count | |
@Override public int getItemCount() { | |
return weatherItemArrayList.size(); | |
} | |
@Override public long getItemId(int position) { | |
return position; | |
} | |
//Provide a reference to the views for each data item | |
static class ViewHolder extends RecyclerView.ViewHolder { | |
TextView mWeatherText; | |
ImageView mWeatherImage; | |
public ViewHolder(View itemView) { | |
super(itemView); | |
mWeatherText = (TextView) itemView.findViewById(R.id.tv_weather_text); | |
mWeatherImage = (ImageView) itemView.findViewById(R.id.iv_weather_icon); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment