-
-
Save IRMobydick/c8281f0b25d052359b3e to your computer and use it in GitHub Desktop.
recycler view header adapter with empty data
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
import android.support.v7.widget.RecyclerView; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.Button; | |
import android.widget.TextView; | |
/** | |
* Created by khaled bakhtiari on 10/26/2014. | |
* <a href="http://about.me/kh.bakhtiari"> | |
*/ | |
public class HeaderAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | |
private static final int TYPE_HEADER = 0; | |
private static final int TYPE_ITEM = 1; | |
String[] data; | |
public HeaderAdapter(String[] data) { | |
this.data = data; | |
} | |
@Override | |
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
if (viewType == TYPE_ITEM) { | |
//inflate your layout and pass it to view holder | |
return new VHItem(null); | |
} else if (viewType == TYPE_HEADER) { | |
//inflate your layout and pass it to view holder | |
return new VHHeader(null); | |
} | |
throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly"); | |
} | |
@Override | |
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { | |
if (holder instanceof VHItem) { | |
String dataItem = getItem(position); | |
//cast holder to VHItem and set data | |
} else if (holder instanceof VHHeader) { | |
//cast holder to VHHeader and set data for header. | |
} | |
} | |
@Override | |
public int getItemCount() { | |
if (data.isEmpty() { | |
return data.length; | |
} else { | |
return data.length + 1; | |
} | |
} | |
@Override | |
public int getItemViewType(int position) { | |
if (isPositionHeader(position)) | |
return TYPE_HEADER; | |
return TYPE_ITEM; | |
} | |
private boolean isPositionHeader(int position) { | |
return position == 0; | |
} | |
private String getItem(int position) { | |
return data[position - 1]; | |
} | |
class VHItem extends RecyclerView.ViewHolder { | |
TextView title; | |
public VHItem(View itemView) { | |
super(itemView); | |
} | |
} | |
class VHHeader extends RecyclerView.ViewHolder { | |
Button button; | |
public VHHeader(View itemView) { | |
super(itemView); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment