RecyclerView(Horizontal) setando classificações e setar informaçoes em uma Gridview(Vertical)

31/07/2018

0

Olá gostaria de saber como criar uma RecyclerView (Horizontal) acima da tela e abaixo uma GridView(Vertical) , quero separar informações na RecyclerView (Horizontal), estará setada nomes de classificação como: Eletrônicos, Games, Cosméticos e etc...Quando clicar em uma delas por exemplo Eletrônicos setara as imagens abaixo na GridView(Vertical) com todas as imagens relacionadas a Eletrônicos um exemplo idêntico é a pagina de Feed News do Instagram aonde aparece todas as fotos e videos postadas recentemente e são separadas por classificações como Humor, Esportes, Musica e etc...Eu consegui fazer algo parecido mas infelizmente do jeito errado , no caso ao invés de eu clicar na classificação Eletrônicos da RecyclerView(Horizontal) e setar uma array de informações na GridView(Vertical) abaixo ele esta só adicionando uma informação por vez abaixo.Aqui mostrar meu codigo só usei TextView para o exemplo:
//MainActivity
public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerViewClasses;
    private RecyclerView recyclerViewDoisClasses;
    private List<classes> listaNomes = new ArrayList<>();
    private List<classes> listaNomesDois = new ArrayList <>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );

        criarClasses();
        recyclerViewClasses = (RecyclerView) findViewById( R.id.recyclerViewUmId );
        recyclerViewDoisClasses = (RecyclerView) findViewById( R.id.recyclerViewDoisId );
        //Configurar adapter
        ClassesAdapter classesAdapter = new ClassesAdapter( getApplicationContext(), listaNomes );
        final ClasseAdapterDois classeAdapterDois = new ClasseAdapterDois( getApplicationContext(), listaNomesDois );
        //Configura RecyclerView
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager( getApplicationContext(), LinearLayoutManager.HORIZONTAL , false );
        recyclerViewClasses.setLayoutManager( layoutManager );
        recyclerViewClasses.setHasFixedSize( true );
        recyclerViewClasses.setAdapter( classesAdapter );

        recyclerViewClasses.addOnItemTouchListener(
                new RecyclerItemClickListener(
                        getApplicationContext(),
                        recyclerViewClasses,
                        new RecyclerItemClickListener.OnItemClickListener() {
                            @Override
                            public void onItemClick(View view, int position) {

                                classes classesAdapter = listaNomes.get( position );

                                listaNomesDois.add( classesAdapter );
                                classeAdapterDois.notifyDataSetChanged();
                            }
                            @Override
                            public void onLongItemClick(View view, int position) {
                            }
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            }
                        }
                )
        );
        //Configurar recyclerview para os membrosSelecionados

        RecyclerView.LayoutManager layoutManager1 = new GridLayoutManager( this,3 );
        recyclerViewDoisClasses.setLayoutManager( layoutManager1 );
        recyclerViewDoisClasses.setHasFixedSize( true );
        recyclerViewDoisClasses.setAdapter( classeAdapterDois  );

        recyclerViewDoisClasses.addOnItemTouchListener(
                new RecyclerItemClickListener( getApplicationContext(),
                        recyclerViewDoisClasses,
                        new RecyclerItemClickListener.OnItemClickListener() {
                            @Override
                            public void onItemClick(View view, int position) {

                                classes classesDois = listaNomesDois.get( position );
                                listaNomes.add( classesDois );
                            }
                            @Override
                            public void onLongItemClick(View view, int position) {
                            }
                            @Override
                            public void onItemClick(AdapterView <?> parent, View view, int position, long id) {

                            }
                        } )
        );
    }
    public void criarClasses(){

classes classesNome = new classes( "Eletronicos" );
listaNomes.add( classesNome );

classesNome = new classes( "Cosméticos" );
listaNomes.add( classesNome );

classesNome = new classes( "Promoções" );
listaNomes.add( classesNome );

classesNome = new classes( "Promoções" );
listaNomes.add( classesNome );

classesNome = new classes( "Promoções" );
listaNomes.add( classesNome );

classesNome = new classes( "Promoções" );
listaNomes.add( classesNome );

classesNome = new classes( "Promoções" );
listaNomes.add( classesNome );

classesNome = new classes( "Promoções" );
listaNomes.add( classesNome );

}
}

//Classes - modelo
public class classes {

    private String nomeClasse;

    public classes(){
    }
    public classes(String nomeClasse){
        this.nomeClasse = nomeClasse;
    }
    public String getNomeClasse() {
        return nomeClasse;
    }
    public void setNomeClasse(String nomeClasse) {
        this.nomeClasse = nomeClasse;
    }
}

//ClasseAdapter
public class ClassesAdapter  extends RecyclerView.Adapter<ClassesAdapter.ViewHolder>{

    private List<classes> listaNomes;
    private Context mContext;

    public ClassesAdapter (Context mContext, List<classes> listaNomes){
        this.listaNomes = listaNomes;
        this.mContext = mContext;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate( R.layout.layout_adaptador_classes, parent,false );
        
        return new ViewHolder( view );
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        
        classes classesNomes = listaNomes.get( position );
        holder.textoClasses.setText( classesNomes.getNomeClasse() );
     }  
    @Override
    public int getItemCount() {
        return listaNomes.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder{
    private TextView textoClasses;
    public ViewHolder(View itemView) {
    super( itemView );
 textoClasses = (TextView) itemView.findViewById( R.id.nomeClasseId );
}   
}
}

//ClasseAdapterDois
public class ClasseAdapterDois extends RecyclerView.Adapter<ClasseAdapterDois.ViewHolder> {
    private List<classes> listaNomesBaixo;
    private Context mContext;
    public String[] nomes = {  "nome", "Sobre" , "qual",
    "ois" , "deve" , "dsd" ,"nome", "Sobre" , "qual","ois" , "deve" , "dsd"  };
    public ClasseAdapterDois(Context mContext, List<classes> listaNomesBaixo){
    this.mContext = mContext;
    this.listaNomesBaixo = listaNomesBaixo;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
      View view = LayoutInflater.from( parent.getContext() )
     .inflate( R.layout.layout_adaptador_dois_classes, parent ,false );

   return new ViewHolder( view );
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    classes classesNomes = listaNomesBaixo.get( position );
    holder.nomeBaixo.setText( nomes[position] );
 }
@Override
public int getItemCount() {
return listaNomesBaixo.size();
 public class ViewHolder extends RecyclerView.ViewHolder{
  private TextView nomeBaixo;
        public ViewHolder(View itemView) {
            super( itemView );
  nomeBaixo = (TextView) itemView.findViewById( R.id.textodeBaixoId);
 
Pedro Henrique

Pedro Henrique

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar