Fórum RecyclerView(Horizontal) setando classificações e setar informaçoes em uma Gridview(Vertical) #595895
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 :)