Advertisement
Guest User

Untitled

a guest
Jan 5th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.88 KB | None | 0 0
  1. package com.androidbie.differenctviewonrecyclerviewitem;
  2.  
  3. import android.content.Context;
  4. import android.support.v7.widget.RecyclerView;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.Button;
  9. import android.widget.EditText;
  10. import android.widget.LinearLayout;
  11. import android.widget.TextView;
  12. import android.widget.Toast;
  13.  
  14. import com.androidbie.differenctviewonrecyclerviewitem.models.ItemModel;
  15.  
  16. import java.util.List;
  17.  
  18. /**
  19. * Created by putuguna on 05/01/17.
  20. */
  21.  
  22. public class ViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
  23.  
  24. private List<ItemModel> mListItemModel;
  25. private Context mContext;
  26.  
  27. public ViewAdapter(List<ItemModel> mListItemModel, Context mContext) {
  28. this.mListItemModel = mListItemModel;
  29. this.mContext = mContext;
  30. }
  31.  
  32. // override this method manually
  33. @Override
  34. public int getItemViewType(int position) {
  35. ItemModel item = mListItemModel.get(position);
  36. if(item.getIndex()==0){
  37. return 0;
  38. }else if(item.getIndex()==1){
  39. return 1;
  40. }else if(item.getIndex()==2){
  41. return 2;
  42. }
  43. return super.getItemViewType(position);
  44. }
  45.  
  46.  
  47. @Override
  48. public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  49. RecyclerView.ViewHolder holder = null;
  50. LayoutInflater inflater = LayoutInflater.from(parent.getContext());
  51. switch (viewType){
  52. case 0:
  53. View viewInputUserPassword = inflater.inflate(R.layout.view_input_username_and_password, parent, false);
  54. holder = new InputUsernameAndPasswordViewHolder(viewInputUserPassword);
  55. break;
  56. case 1:
  57. View viewLoading = inflater.inflate(R.layout.view_please_wait, parent, false);
  58. holder = new LoadingPleaseWaitViewHolder(viewLoading);
  59. break;
  60. case 2:
  61. View viewDetail = inflater.inflate(R.layout.view_detail_usernamepassword, parent, false);
  62. holder = new DetailListPasswordAndUsernameViewHolder(viewDetail);
  63. break;
  64. }
  65. return holder;
  66. }
  67.  
  68. @Override
  69. public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
  70. ItemModel itemModel = mListItemModel.get(position);
  71.  
  72. if(holder instanceof InputUsernameAndPasswordViewHolder){
  73. ((InputUsernameAndPasswordViewHolder) holder).tvDesc.setText("Description = "+itemModel.getDescription());
  74. ((InputUsernameAndPasswordViewHolder) holder).tvName.setText("Name = "+itemModel.getName());
  75. ((InputUsernameAndPasswordViewHolder) holder).tvCity.setText("City = " + itemModel.getCity());
  76. // do onClick on LinearLayout to see the position of recyclerview item
  77. ((InputUsernameAndPasswordViewHolder) holder).llInputUsernamePassword.setOnClickListener(new View.OnClickListener() {
  78. @Override
  79. public void onClick(View view) {
  80. Toast.makeText(mContext, "RecyclerView's item position = " + position, Toast.LENGTH_SHORT).show();
  81. }
  82. });
  83. }else if(holder instanceof LoadingPleaseWaitViewHolder){
  84. ((LoadingPleaseWaitViewHolder) holder).tvDesc.setText("Description = "+itemModel.getDescription());
  85. ((LoadingPleaseWaitViewHolder) holder).tvName.setText("Name = "+itemModel.getName());
  86. ((LoadingPleaseWaitViewHolder) holder).tvCity.setText(itemModel.getCity());
  87. // do onClick on LinearLayout to see the position of recyclerview item
  88. ((LoadingPleaseWaitViewHolder) holder).llLoading.setOnClickListener(new View.OnClickListener() {
  89. @Override
  90. public void onClick(View view) {
  91. Toast.makeText(mContext, "RecyclerView's item position = " + position, Toast.LENGTH_SHORT).show();
  92. }
  93. });
  94. }else if(holder instanceof DetailListPasswordAndUsernameViewHolder){
  95. ((DetailListPasswordAndUsernameViewHolder) holder).tvDesc.setText("Description = "+itemModel.getDescription());
  96. ((DetailListPasswordAndUsernameViewHolder) holder).tvName.setText("Name = "+itemModel.getName());
  97. ((DetailListPasswordAndUsernameViewHolder) holder).tvCity.setText("City = " + itemModel.getCity());
  98. // do onClick on LinearLayout to see the position of recyclerview item
  99. ((DetailListPasswordAndUsernameViewHolder) holder).llDetail.setOnClickListener(new View.OnClickListener() {
  100. @Override
  101. public void onClick(View view) {
  102. Toast.makeText(mContext, "RecyclerView's item position = " + position, Toast.LENGTH_SHORT).show();
  103. }
  104. });
  105. }
  106. }
  107.  
  108. @Override
  109. public int getItemCount() {
  110. return mListItemModel.size();
  111. }
  112.  
  113.  
  114. /**
  115. * first, create Input ViewHolder of username and password
  116. */
  117. public class InputUsernameAndPasswordViewHolder extends RecyclerView.ViewHolder{
  118.  
  119. public EditText etUsername;
  120. public EditText etPassword;
  121. public Button btnAddToList;
  122. public Button btnDone;
  123. public TextView tvDesc;
  124. public TextView tvName;
  125. public TextView tvCity;
  126. public LinearLayout llInputUsernamePassword;
  127.  
  128. public InputUsernameAndPasswordViewHolder(View itemView) {
  129. super(itemView);
  130.  
  131. etPassword = (EditText) itemView.findViewById(R.id.edit_text_password);
  132. etUsername = (EditText) itemView.findViewById(R.id.edit_text_username);
  133. btnAddToList = (Button) itemView.findViewById(R.id.button_add_to_list);
  134. btnDone = (Button) itemView.findViewById(R.id.button_done);
  135. tvDesc = (TextView) itemView.findViewById(R.id.textview_description_input_usernamepassword);
  136. tvName = (TextView) itemView.findViewById(R.id.textview_name_input_usernamepassword);
  137. tvCity = (TextView) itemView.findViewById(R.id.textview_city_input_usernamepassword);
  138. llInputUsernamePassword = (LinearLayout) itemView.findViewById(R.id.ll_input_username_password);
  139. }
  140. }
  141.  
  142. /**
  143. * Second, create loading view holder to display loading view after finish input data
  144. */
  145. public class LoadingPleaseWaitViewHolder extends RecyclerView.ViewHolder{
  146.  
  147. public LinearLayout llLoading;
  148. public TextView tvDesc;
  149. public TextView tvName;
  150. public TextView tvCity;
  151.  
  152. public LoadingPleaseWaitViewHolder(View itemView) {
  153. super(itemView);
  154.  
  155. llLoading = (LinearLayout) itemView.findViewById(R.id.ll_progressbar);
  156. tvDesc = (TextView) itemView.findViewById(R.id.textview_description_please_wait);
  157. tvName = (TextView) itemView.findViewById(R.id.textview_name_please_wait);
  158. tvCity = (TextView) itemView.findViewById(R.id.textview_city_please_wait);
  159. }
  160. }
  161.  
  162. /**
  163. * Third, create List ViewHolder to display list of username and password
  164. */
  165. public class DetailListPasswordAndUsernameViewHolder extends RecyclerView.ViewHolder{
  166.  
  167. public TextView tvUsername;
  168. public TextView tvPassword;
  169. public TextView tvDesc;
  170. public TextView tvName;
  171. public TextView tvCity;
  172. public LinearLayout llDetail;
  173.  
  174. public DetailListPasswordAndUsernameViewHolder(View itemView) {
  175. super(itemView);
  176.  
  177. tvUsername = (TextView) itemView.findViewById(R.id.textview_username);
  178. tvPassword = (TextView) itemView.findViewById(R.id.textview_password);
  179. tvDesc = (TextView) itemView.findViewById(R.id.textview_description_detail);
  180. tvName = (TextView) itemView.findViewById(R.id.textview_name_detail);
  181. tvCity = (TextView) itemView.findViewById(R.id.textview_city_detail);
  182. llDetail = (LinearLayout) itemView.findViewById(R.id.ll_detail_view);
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement