Skip to content

Instantly share code, notes, and snippets.

@umesh0492
Created March 1, 2016 20:53
Show Gist options
  • Save umesh0492/e65d5195d8962b1a3049 to your computer and use it in GitHub Desktop.
Save umesh0492/e65d5195d8962b1a3049 to your computer and use it in GitHub Desktop.
class RecyclerViewWithMultipleViews extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final String TAG = "SettingAdapter";
private ArrayList<SystemPreferenceStructureDbModel> preferenceList = new ArrayList<>();
private UserProfileActivity mActivity;
public RecyclerViewWithMultipleViews(ArrayList<SystemPreferenceStructureDbModel> preferenceList) {
this.preferenceList = preferenceList;
}
public void addPreference(SystemPreferenceStructureDbModel preference) {
insert(preference, preferenceList.size());
}
private void insert(SystemPreferenceStructureDbModel preference, int position) {
preferenceList.add(position, preference);
notifyItemInserted(position);
}
public void resetAndUpdateAdapter(ArrayList<SystemPreferenceStructureDbModel> preferenceList) {
this.preferenceList = preferenceList;
notifyDataSetChanged();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder = null;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case 3:
View v3 = inflater.inflate(R.layout.adapter_preference_input, parent, false);
viewHolder = new EmailInputHolder(v3);
break;
case 5:
View v5 = inflater.inflate(R.layout.adapter_preference_input, parent, false);
viewHolder = new StringInputHolder(v5);
break;
case 6:
View v6 = inflater.inflate(R.layout.adapter_preference_input, parent, false);
viewHolder = new IntegerInputHolder(v6);
break;
}
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
switch (viewHolder.getItemViewType()) {
case 3:
EmailInputHolder vh3 = (EmailInputHolder) viewHolder;
configureEmailInputHolder(vh3, position);
break;
case 5:
StringInputHolder vh5 = (StringInputHolder) viewHolder;
configureStringInputHolder(vh5, position);
break;
case 6:
IntegerInputHolder vh6 = (IntegerInputHolder) viewHolder;
configureIntegerInputHolder(vh6, position);
break;
}
}
@Override
public int getItemViewType(int position) {
switch (preferenceList.get(position).getPreferenceTypeInputType()) {
case "emailinput":
return 3;
case "stringinput":
return 5;
case "integerinput":
return 6;
default:
return 0;
}
}
private void configureEmailInputHolder(final EmailInputHolder holder, final int position) {
}
private void configureStringInputHolder(final StringInputHolder holder, final int position) {
}
private void configureIntegerInputHolder(final IntegerInputHolder holder, final int position) {
}
@Override
public int getItemCount() {
return preferenceList.size();
}
public class EmailInputHolder extends RecyclerView.ViewHolder {
public EmailInputHolder(View v) {
super(v);
}
}
public class StringInputHolder extends RecyclerView.ViewHolder {
public StringInputHolder(View v) {
super(v);
}
}
public class IntegerInputHolder extends RecyclerView.ViewHolder {
public IntegerInputHolder(View v) {
super(v);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment