Last active
January 9, 2018 03:16
-
-
Save ueno-yuhei/b9e7ed6a5082cce94e67eb0c4f701eb9 to your computer and use it in GitHub Desktop.
RecyclerView(縦) in RecyclerView(横) ref: https://qiita.com/ueno-yuhei/items/eaf4c8d1420402513c3c
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
public class HorizontalRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | |
private ArrayList<Object> mList; | |
private static final int VIEW_ITEM_TYPE = 0; | |
public void setList(ArrayList list) { | |
mList = list; | |
} | |
@Override | |
public int getItemCount() { | |
if (mList != null) { | |
return mList.size(); | |
} | |
return 0; | |
} | |
@Override | |
public int getItemViewType(int position) { | |
Object item = mList.get(position); | |
if (item instanceof VerticalItem) { | |
return VIEW_ITEM_TYPE; | |
} | |
return super.getItemViewType(position); | |
} | |
@Override | |
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
switch (viewType) { | |
case VIEW_ITEM_TYPE: | |
View itemView = | |
LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false); | |
return new ViewItemHolder(itemView); | |
} | |
return null; | |
} | |
@Override | |
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { | |
switch (holder.getItemViewType()) { | |
case VIEW_ITEM_TYPE: | |
ViewItemHolder viewItemHolder = (ViewItemHolder) holder; | |
ViewItem viewItem = (ViewItem) mList.get(position); | |
viewItemHolder.bindViewHolder(viewItem); | |
break; | |
} | |
} | |
} |
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
public class HorizontalRecycleViewHolder extends RecyclerView.ViewHolder { | |
private RecyclerView mHorizontalRecyclerView; | |
private HorizontalRecyclerViewAdapter mHorizontalRecyclerViewAdapter; | |
public HorizontalRecycleViewHolder(View itemView) { | |
super(itemView); | |
// RecyclerView | |
mHorizontalRecyclerView = itemView.findViewById(R.id.horizontal_recycler_view); | |
// LayoutManager(Horizontal) | |
LinearLayoutManager linearLayoutManager = | |
new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.HORIZONTAL, false); | |
mHorizontalRecyclerView.setLayoutManager(linearLayoutManager); | |
// Adapter | |
mHorizontalRecyclerViewAdapter = new HorizontalRecyclerViewAdapter(); | |
mHorizontalRecyclerView.setAdapter(mHorizontalRecyclerViewAdapter); | |
} | |
public void bindViewHolder(VerticalItem verticalItem) { | |
// データをセット | |
mHorizontalRecyclerViewAdapter.setList(verticalItem.getList()); | |
mHorizontalRecyclerViewAdapter.notifyDataSetChanged(); | |
} | |
} |
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
public class MainActivity extends Activity { | |
private RecyclerView mVerticalSampleRecyclerView; | |
private VerticalRecyclerViewAdapter mVerticalRecyclerViewAdapter; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
mVerticalSampleRecyclerView = findViewById(R.id.vertical_recycler_view); | |
// LayoutManager | |
LinearLayoutManager linearLayoutManager = | |
new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false); | |
mVerticalSampleRecyclerView.setLayoutManager(linearLayoutManager); | |
// Adapter | |
mVerticalRecyclerViewAdapter = new VerticalRecyclerViewAdapter(); | |
mVerticalSampleRecyclerView.setAdapter(mVerticalRecyclerViewAdapter); | |
// リストをセット | |
ArrayList<VerticalItem> verticalItems = new ArrayList<>(); | |
verticalItems.add(getVerticalItem()); | |
verticalItems.add(getVerticalItem()); | |
verticalItems.add(getVerticalItem()); | |
verticalItems.add(getVerticalItem()); | |
verticalItems.add(getVerticalItem()); | |
verticalItems.add(getVerticalItem()); | |
verticalItems.add(getVerticalItem()); | |
// リストセット・更新 | |
mVerticalRecyclerViewAdapter.setList(verticalItems); | |
mVerticalRecyclerViewAdapter.notifyDataSetChanged(); | |
} | |
private VerticalItem getVerticalItem() { | |
ArrayList viewItems = new ArrayList<>(); | |
for (int i = 0; i < 10; i++) { | |
viewItems.add(new ViewItem()); | |
} | |
VerticalItem verticalItem = new VerticalItem(viewItems); | |
return verticalItem; | |
} | |
} |
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
public class VerticalRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | |
private ArrayList<Object> mList; | |
private static final int HORIZONTAL_VIEW_TYPE = 0; | |
public void setList(ArrayList list) { | |
mList = list; | |
} | |
@Override | |
public int getItemCount() { | |
if (mList != null) { | |
return mList.size(); | |
} | |
return 0; | |
} | |
@Override | |
public int getItemViewType(int position) { | |
Object item = mList.get(position); | |
if (item instanceof VerticalItem) { | |
return HORIZONTAL_VIEW_TYPE; | |
} | |
return super.getItemViewType(position); | |
} | |
@Override | |
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
switch (viewType) { | |
case HORIZONTAL_VIEW_TYPE: | |
View itemView = | |
LayoutInflater.from(parent.getContext()).inflate(R.layout.horizontal_recycler_view, parent, false); | |
return new HorizontalRecycleViewHolder(itemView); | |
} | |
return null; | |
} | |
@Override | |
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { | |
switch (holder.getItemViewType()) { | |
case HORIZONTAL_VIEW_TYPE: | |
HorizontalRecycleViewHolder | |
horizontalRecycleViewHolder = (HorizontalRecycleViewHolder) holder; | |
// 横に並ぶアイテムをセット | |
VerticalItem verticalItem = (VerticalItem) mList.get(position); | |
horizontalRecycleViewHolder.bindViewHolder(verticalItem); | |
break; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment