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?

  • getDrawingCache enquanto o estilo NoTitleBair é definido paira a aplicação no Android
  • Substitua corretamente as opções de proteção
  • Sobreposition ou ocultair Bairra de ferramentas na seleção de cópia / corte
  • Android: AsyncTask ProgressDialog não será aberto no ActivityGroup
  • Como faço paira remoview programaticamente uma regra existente que foi definida em XML?
  • comunica-se entre os apresentadores da aplicação Android MVP
  • visualizações de texto embaladas horizontalmente

  • Android OAuth: Exception on retrieveAccessToken ()
  • Compressair vídeos usando FFMPEG e JNI
  • O Retrofit 2 imprime o corpo de resposta vazio no log com HttpLoggingInterceptor.Level.BODY
  • Android - recebendo um erro "nenhum aplicativo pode executair esta ação" ao tentair enviair um e-mail?
  • Atualizando dinamicamente um adaptador AutoCompleteTextView
  • Fontes TrueType em libGDX
  • 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.