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
//Classes - modelo
//ClasseAdapter
//ClasseAdapterDois
//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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)