To create different kind of items, you need to override the getItemViewType() adapter method, which will, depending on the condition, determine what kind of item is required in this position. In RecyclerView this mechanism has been improved and the onCreateViewHolder() method returns the ViewType value - which type of item is required at this position:
class MyAdapter extends RecyclerView.Adapter <MyAdapter.ItemHolder> { private final int TYPE_ITEM1 = 0; private final int TYPE_ITEM2 = 1; public MyAdapter () { // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠ° } @Override public ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v; switch (viewType) { // ΠΈΠ½ΡΠ»Π΅ΠΉΡΠΈΠΌ Π½ΡΠΆΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, // ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π°ΠΉΡΠ΅ΠΌΠ° Π½ΡΠΆΠ΅Π½ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ case TYPE_ITEM1: v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item1, parent, false); break; case TYPE_ITEM2: v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item2, parent, false); } return new ItemHolder(v); } @Override public void onBindViewHolder( ItemHolder holder, int position) { // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΠΏ Π°ΠΉΡΠ΅ΠΌΠ° Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠΌΠΈ int type = getItemViewType(position); switch (type) { case TYPE_ITEM1: holder.mText1.setText("Π±ΠΈΠ½Π΄ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² Π°ΠΉΡΠ΅ΠΌ ΡΠΈΠΏΠ° 1"); break; case TYPE_ITEM2: holder.mText2.setText("Π±ΠΈΠ½Π΄ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² Π°ΠΉΡΠ΅ΠΌ ΡΠΈΠΏΠ° 2"); break; } } @Override public int getItemViewType(int position) { // ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°ΠΉΡΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ if (position == <ΡΡΠ»ΠΎΠ²ΠΈΠ΅>) return TYPE_ITEM1; return TYPE_ITEM2; } public static class ItemHolder extends RecyclerView.ViewHolder{ TextView mText1; TextView mText2; public ItemHolder(View v) { super(v); mText1 = (TextView) v.findViewById(R.id.text1); mText2 = (TextView) v.findViewById(R.id.text2); } }