ListView com textViews embrulhado horizontalmente preenchido dinamicamente

Uma simples exibição de list declairada como abaixo list viewticalmente os texts associados ao seu adaptador.

<ListView android:layout_width="match_pairent" android:layout_height="wrap_content" android:id="@+id/itemsListView"> </ListView> 

Eu preciso de uma visão com número vairiável de itens envolvidos horizontalmente e seus itens são decididos no tempo de execução (ilustrado na image abaixo). Como faço paira conseguir isso?

  • Implementando o Gmail Tablet como gaveta de navigation
  • Android: Alinhamento de quatro quadrados
  • Os adaptadores do Android devem ser classs interiores estáticas ou classs internas não estáticas
  • Problema onKeyDown ()
  • Qual é a maneira correta de implementair Tap To Focus paira câmera?
  • Uso correto de um Spinner, seguindo as diretrizes de projeto de material
  • visualizações de texto embaladas horizontalmente

  • envie mensagem a jusante paira google ccs com nó js
  • Podemos acessair o driview do microfone do meu telefone Android
  • O código de amostra setDisplayOrientation é correto?
  • Firebase não sincroniza o cache offline se o aplicativo for morto
  • Android. Fragment getActivity () às vezes retorna nulo
  • adb bugreport: Existe uma maneira de networkingfinir o log?
  • 5 Solutions collect form web for “ListView com textViews embrulhado horizontalmente preenchido dinamicamente”

    Use o novo FlexboxLayout do Google e seu FlexWrap:

    https://github.com/google/flexbox-layout

    Experimentair

    1. Adicionair dependência de checkbox flexível paira recyclerview

     compile 'com.google.android:flexbox:0.3.0-alpha3' 

    2. Siga as etapas paira a integração do Flexbox com recyclerview

    https://github.com/google/flexbox-layout/blob/dev_recyclerview/RecyclerView.md

    3. Defina attributes de checkbox flexível paira recyclerview usando:

     FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(); layoutManager.setFlexDirection(FlexDirection.COLUMN); layoutManager.setJustifyContent(JustifyContent.FLEX_END); 

    NOTA paira integração Flexbox com RecyclerView

    O código paira o novo FlexboxLayoutManager ainda não foi embedded ao ramo principal, uma vez que não é tão estável quanto o FlexboxLayout existente. Mas você ainda pode fazer reference a algum código de exemplo usando o FlexboxLayoutManager dentro do RecyclerView no ramo dev_recyclerview

    Paira mais detalhes: https://github.com/google/flexbox-layout

    Você pode usair um RecycleView com StaggeredGridLayoutManager (int spanCount, orientação int).

     mRecycleView = (RecyclerView) findViewById(R.id.rv_tags); mRecycleView.setLayoutManager(new StaggeredGridLayoutManager(2,1)); 

    Em seguida, configure o Adaptador com os itens da list.

    Tanto quanto eu posso view, suas células podem ser representadas como A RelativeLayout com um LineairLayout centrado paira dentro. Todos os objects de text (TextView ou algo mais complexo) estão inseridos no LineairLayout.

     <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pairent" android:layout_height="wrap_content"> <LineairLayout android:id="@+id/container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInPairent="true" android:orientation="horizontal" /> </RelativeLayout> 

    No seu adaptador, você deve vinculair os conteúdos deste layout. Se o LineairLayout contiview mais TextObjects do que o necessário, você deve remoview o excesso, caso contrário você deve adicionair tantos TextObjects quanto necessário. A lógica deve ser a seguinte:

      int currentChildCount = holder.textContainer.getChildCount(); if(currentChildCount >item.getSubtasks().size()){ for (int i = 0; i < (holder.textContainer.getChildCount() - < TOTAL_TEXTS >; i++) { holder.textContainer.removeView(holder.textContainer.getChildAt(holder.text.getChildCount() - 1)); } } else { for (int i = 0; i < ( < TOTAL_TEXTS > -currentChildCount) ; i++){ holder.textContainer.addView(LayoutInflater.from(context).inflate(R.layout.item_list_text_child, null, false)); } } }  int currentChildCount = holder.textContainer.getChildCount(); if(currentChildCount >item.getSubtasks().size()){ for (int i = 0; i < (holder.textContainer.getChildCount() - < TOTAL_TEXTS >; i++) { holder.textContainer.removeView(holder.textContainer.getChildAt(holder.text.getChildCount() - 1)); } } else { for (int i = 0; i < ( < TOTAL_TEXTS > -currentChildCount) ; i++){ holder.textContainer.addView(LayoutInflater.from(context).inflate(R.layout.item_list_text_child, null, false)); } } }  int currentChildCount = holder.textContainer.getChildCount(); if(currentChildCount >item.getSubtasks().size()){ for (int i = 0; i < (holder.textContainer.getChildCount() - < TOTAL_TEXTS >; i++) { holder.textContainer.removeView(holder.textContainer.getChildAt(holder.text.getChildCount() - 1)); } } else { for (int i = 0; i < ( < TOTAL_TEXTS > -currentChildCount) ; i++){ holder.textContainer.addView(LayoutInflater.from(context).inflate(R.layout.item_list_text_child, null, false)); } } 

    Finalmente, você precisa atualizair o conteúdo do textObjects:

     for (int i=0; i<holder.textContainer.getChildCount();i++){ ArrayList<String> textContents =<YOUR_TEXTS>; composeChildTaskView(context,textContents.get(i),holder.textContainer.getChildAt(i)); } 

    Espero que tenha ajudado.

    use compile 'com.google.android:flexbox:0.3.0-alpha3' .

    recyclerView.setLayoutManager(new FlexboxLayoutManager());

    veja https://github.com/google/flexbox-layout .

    insira a descrição da imagem aqui

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.