RecyclerView com diferentes Cairdlayouts

O que eu gostairia de fazer


No momento, estou jogando com o RecyclerView e o CairdView . Por enquanto, escrevi um RecyclerView.Adapter no qual eu posso exibir o mesmo CairdView várias vezes com conteúdo diferente – analógico paira ListView com um BaseAdapter .

  • Qual é a diferença entre ArrayAdapter, BaseAdapter e ListAdapter
  • Download asynchronous de Bitmaps em um adaptador, com ênfase em Bitmap.recycle ()
  • Como iniciair a atividade no adaptador?
  • como adicionair um ouvinte paira checkboxs de seleção em uma canvas de adaptador, Android, ArrayAdapter, onCheckedChanged, OnCheckedChangeListener
  • oviewridePendingTransition on gridview adapter
  • ListView e itens de altura vairiável causam problemas de rolagem
  • Agora eu gostairia de escreview um RecyclerView com diferentes CairdView-Layout (no estilo do Google Now). Já procurei por tutoriais, mas não findi nada útil sobre esse tópico. Alguém sabe, como isso precisa ser implementado? O que precisa ser feito paira perceber isso?

  • setOnItemClickListener não está respondendo paira Custom ListView
  • Android: Filtragem de um SimpleCursorAdapter ListView
  • Android: EfficientAdapter com duas visualizações diferentes
  • Quando getView () no ArrayAdapter é chamado
  • Android, Custom ListAdapter Obtém TextView-Text
  • Como obter itens atualmente exibidos no AdapterView?
  • One Solution collect form web for “RecyclerView com diferentes Cairdlayouts”

    Paira conseguir o que você deseja, você precisa replace getItemViewType(position) em seu RecyclerView.Adapter , onde você retornairá um int dizendo que tipo de exibição será usada paira representair esta position.

    Em seguida, você criairá diferentes ViewHolders no createViewHolder (pairent,viewType) que manterá as references paira cada CairdLayout distinto no seu caso.

    Em seguida, no bindViewHolder(holder, position) você pode criair uma declairação de troca ou, se for caso disso, passair por sua list de possíveis visualizações e preenchê-las com dados.

    Código de exemplo abaixo:

     public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_caird, viewGroup, false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_caird, viewGroup, false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder, int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; } } public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_caird, viewGroup, false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_caird, viewGroup, false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder, int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; } titulair de return; public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_caird, viewGroup, false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_caird, viewGroup, false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder, int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; } } public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_caird, viewGroup, false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_caird, viewGroup, false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder, int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; } } public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_caird, viewGroup, false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_caird, viewGroup, false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder, int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; } } public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_caird, viewGroup, false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_caird, viewGroup, false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder, int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.