'Recyclerview Inflate 2 Layout
I develop voucher page that load all available voucher. But I need to also include slideshow in it.
Recyclerview include 2 main layout:
- Slideshow (
slideshow.xml) - Card View (
card_view_horizontal.xml)
My current code used to load cardview only to recyclerview.
import android.content.Intent;
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 java.util.ArrayList;
/**
* Created by venkataprasad on 02-01-2015.
*/
public class VoucherDataAdapter extends RecyclerView.Adapter<VoucherDataAdapter.ViewHolder> {
private static ArrayList<FeddProperties> dataSet;
public VoucherDataAdapter(ArrayList<FeddProperties> os_versions) {
dataSet = os_versions;
}
@Override
public VoucherDataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
// create a new view
View itemLayoutView = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.card_view_horizontal, null);
// create ViewHolder
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
@Override
public void onBindViewHolder(VoucherDataAdapter.ViewHolder viewHolder, int i) {
FeddProperties fp = dataSet.get(i);
viewHolder.tvVersionName.setText(fp.getTitle());
viewHolder.iconView.setImageResource(fp.getThumbnail());
viewHolder.feed = fp;
}
@Override
public int getItemCount() {
return dataSet.size();
}
// inner class to hold a reference to each item of RecyclerView
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView tvVersionName;
public ImageView iconView;
public FeddProperties feed;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
tvVersionName = (TextView) itemLayoutView
.findViewById(R.id.tvVersionName);
iconView = (ImageView) itemLayoutView
.findViewById(R.id.iconId);
itemLayoutView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), VoucherDetailActivity.class);
v.getContext().startActivity(intent);
//Toast.makeText(v.getContext(), "os version is: " + feed.getTitle(), Toast.LENGTH_SHORT).show();
}
});
}
}
}
If you have any suggestions, let me know.
Solution 1:[1]
Check this answer on stack RecyclerView with multiple view type
you need to implement getItemViewType(),
@Override
public int getItemViewType(int position) {
// Just as an example, return 0 or 2 depending on position
// Note that unlike in ListView adapters, types don't have to be contiguous
return position % 2 * 2;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new ViewHolder0(...);
case 2: return new ViewHolder2(...);
...
}
Solution 2:[2]
From what your question states, you need a recyclerview that inflates your slideshow.xml (probably in position 0) and card_view_horizontal.xml in rest of the list.
check this article .
I'm sure that is what you want.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Community |
| Solution 2 | Community |
