Bom dia, estou tentando implementar viewHolder e ReciclerView em meu adapter, porem não consigo consigo retornar a lista com os layouts alinhados de forma correta, abaixo segue o código, se alguém tiver alguma ideia de como posso mostrar o cabeçalho e as linhas agrupadas.
package br.com.melhoroferta;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Locale;
public class AdapterLisView extends BaseAdapter {
private final ArrayList<Produto> itens;
private static final int TIPO_ITEM = 0;
private static final int TIPO_ITEM2 = 1;
private static final int TIPO_SEPARADOR = 2;
ViewHolder1 vh1=null;
ViewHolder2 vh2=null;
TextView dsc1,dsc2,dsc3,dsc4,dsc5,dscestab;
View view,view2, v;
Activity actv;
Context context;
String dsc_emp = "";
String dsc_atual = "";
private static NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("pt","BR"));
public AdapterLisView( ArrayList<Produto> itens, Context context) {
this.itens = itens;
this.context = context;
}
@Override
public int getCount() {
return itens.size();
}
@Override
public Object getItem(int i) {
return itens.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
@Override
public View getView(int i,View convertView, ViewGroup viewGroup) {
Produto produto = this.itens.get(i);
if (convertView == null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(getItemViewType(i)==1){
view = inflater.inflate(R.layout.itemlist_layout,null);
vh1 = new ViewHolder1();
vh1.txt1 = (TextView) view.findViewById(R.id.Desc1);
vh1.txt2 = (TextView) view.findViewById(R.id.Desc2);
vh1.txt3 = (TextView) view.findViewById(R.id.Desc3);
vh1.txt4 = (TextView) view.findViewById(R.id.Desc4);
vh1.txt5 = (TextView) view.findViewById(R.id.Desc5);
view.setTag(vh1);
}else{
view2 = inflater.inflate(R.layout.header_layout,null);
vh2 = new ViewHolder2();
vh2.txt1 = (TextView) view2.findViewById(R.id.txtheader);
view2.setTag(vh2);
view = inflater.inflate(R.layout.itemlist_layout,null);
vh1 = new ViewHolder1();
vh1.txt1 = (TextView) view.findViewById(R.id.Desc1);
vh1.txt2 = (TextView) view.findViewById(R.id.Desc2);
vh1.txt3 = (TextView) view.findViewById(R.id.Desc3);
vh1.txt4 = (TextView) view.findViewById(R.id.Desc4);
vh1.txt5 = (TextView) view.findViewById(R.id.Desc5);
view.setTag(vh1);
}
}else{
if(getItemViewType(i)==1){
vh1 = (ViewHolder1) view.getTag();
}else{
vh2 = (ViewHolder2) view2.getTag();
vh1 = (ViewHolder1) view.getTag();
}
}
if(getItemViewType(i)==1) {
vh1.txt1.setText(produto.getDescricao1());
vh1.txt2.setText(nf.format(produto.getValor1()));
vh1.txt4.setText(nf.format(produto.getValor2()));
vh1.txt3.setText(produto.getDescricao2());
vh1.txt5.setText(String.valueOf(produto.getPercdesc()) + "%");
}else{
vh2.txt1.setText(produto.getEstab());
vh1.txt1.setText(produto.getDescricao1());
vh1.txt2.setText(nf.format(produto.getValor1()));
vh1.txt4.setText(nf.format(produto.getValor2()));
vh1.txt3.setText(produto.getDescricao2());
vh1.txt5.setText(String.valueOf(produto.getPercdesc()) + "%");
}
if(getItemViewType(i)==1) {
return view;
}else{
return view2;
}
}
private static class ViewHolder1{
public TextView txt1;
public TextView txt2;
public TextView txt3;
public TextView txt4;
public TextView txt5;
}
private static class ViewHolder2{
public TextView txt1;
}
}
//https://arthurlehdermann.wordpress.com/2013/03/11/android-criando-um-listview-personalizado/