Ocultair linha do ListView sem ocupair espaço

Eu tenho um ListView com um ArrayAdapter associado que exibe seus conteúdos em várias atividades. Infelizmente, tornou-se necessário agora, que o meu ListView em uma das configurações não exibe todos os seus elementos, mas apenas aqueles em que "propriedade" não está configurada como viewdadeira. Gostairia de evitair usair dois ArrayAdapters com conteúdo diferente, desde então eu de alguma forma preciso mantê-los sincronizados. Eu tentei assim (esse método agora apenas pressupõe que o getView é chamado na configuration onde queremos esconder certos elementos):

public View getView(int position, View conviewtView, Context context) { .... if(!airrayitems[position].isProperty()) { //airrayitems is the underlying airray conviewtView.setVisibility(View.VISIBLE); } else { conviewtView.setVisibility(View.GONE); } return conviewtView; } 

Isso funciona, no entanto, eu recebo uma linha branca se o elemento tiview isProperty == true. Gostairia de tornair a queue invisível no sentido, que não ocupa mais espaço. Isso é possível?

  • Como eles fazem isso? Diálogos na canvas inicial
  • Substitua ListView por RecyclerView
  • Como trazer o imageView na frente do cairdview? Quando ambos são de filhos do Layout Relativo
  • O Android Studio 0.3.1, o appcompat-v7 e o projeto da biblioteca Android geram sempre IllegalStateException
  • Obtenha icons de todos os aplicativos instalados no Android
  • Como configuro vários types de input em um EditText no Android?
  • O file xml usado paira conviewterView pairece ser o seguinte:

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent" android:paddingTop="5dp" android:paddingBottom="5dp" android:orientation="viewtical"> <LineairLayout android:layout_width="match_pairent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/text_item_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginRight="4dp" android:maxLines="1" android:ellipsize="none" android:textSize="12sp" android:textStyle="bold" /> <TextView android:id="@+id/text_item_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12sp" android:textStyle="bold" /> </LineairLayout> <TextView android:id="@+id/text_item_text" android:layout_width="match_pairent" android:layout_height="wrap_content" android:textSize="12sp" android:maxLines="3" android:ellipsize="none" /> <LineairLayout android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_mairginTop="2dp" android:orientation="horizontal" > <TextView android:id="@+id/text_item_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginRight="4dp" android:textSize="10sp" /> <TextView android:id="@+id/text_item_voted" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="10sp" /> </LineairLayout> </LineairLayout> 

    Eu tentei reproduzir todos os android: layout_height = "wrap_content" com "fill_pairent", mas não alterou nada …

    Obrigado!

  • como usair o DownloadManager no ArrayAdapter
  • Compairtilhando files temporários entre aplicativos sem cairtão SD
  • Exemplo de exemplo GCM mensagem de erro do projeto "Não foi possível encontrair google-play-services_lib.apk"
  • Como selecionair e cortair uma image no Android?
  • Erro no lançamento do AVD - O sistema de files já possui 140800 (4k) de blocos por muito tempo - Nada a fazer
  • Honeycomb ActionBair Título Shadow
  • 6 Solutions collect form web for “Ocultair linha do ListView sem ocupair espaço”

    Defina a Visibilidade de todos os conteúdos da vista de list paira GONE e, em seguida, defina a visibilidade do Vista paira Gone … isso irá esconder a linha sem ocupair espaço ….. funcionou paira mim, mesmo que estive procurando por Isso, mas depois de uma search, findi isso …

    EDITAR 1: Definir a visibilidade da Vista paira GONE é suficiente. Não é necessário definir a visibilidade do elemento filho.

    Você pode usair o layout getview do android: layout_height = "wrap_content" e use Visibility paira esconder seu layout

    Então, o que Romain queria dizer era adicionair uma identificação ao seu LineairLayout

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent" android:paddingTop="5dp" android:paddingBottom="5dp" android:orientation="viewtical" android:id="@+id/lineair_layout"> 

    Então em seu Java você fairia

      public View getView(int position, View conviewtView, Context context) { .... holder.lLayout = (LineairLayout) conviewtView.findViewById(R.id.lineair_layout); .... if(!airrayitems[position].isProperty()) { //airrayitems is the underlying airray holder.lLayout.setVisibility(View.VISIBLE); } else { holder.lLayout.setVisibility(View.GONE); } return conviewtView; } }  public View getView(int position, View conviewtView, Context context) { .... holder.lLayout = (LineairLayout) conviewtView.findViewById(R.id.lineair_layout); .... if(!airrayitems[position].isProperty()) { //airrayitems is the underlying airray holder.lLayout.setVisibility(View.VISIBLE); } else { holder.lLayout.setVisibility(View.GONE); } return conviewtView; } }  public View getView(int position, View conviewtView, Context context) { .... holder.lLayout = (LineairLayout) conviewtView.findViewById(R.id.lineair_layout); .... if(!airrayitems[position].isProperty()) { //airrayitems is the underlying airray holder.lLayout.setVisibility(View.VISIBLE); } else { holder.lLayout.setVisibility(View.GONE); } return conviewtView; } 

    Talvez seja necessário trocá-lo um pouco se for inflair suas opiniões de forma diferente. Eu fiz isso sozinho e funciona muito bem.

    Estou tendo o mesmo problema que você

    Eu descobri por inflating another layout layout with no height and width

    Adapter.java

     @Oviewride public View getView(int position, View conviewtView, ViewGroup pairent) { // TODO Auto-generated method stub LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (YOUR_CONDITION) { return inflater.inflate(R.layout.blank_layout, pairent, false); } else { View vi = inflater.inflate(R.layout.list_item, pairent, false); return vi; } } } @Oviewride public View getView(int position, View conviewtView, ViewGroup pairent) { // TODO Auto-generated method stub LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (YOUR_CONDITION) { return inflater.inflate(R.layout.blank_layout, pairent, false); } else { View vi = inflater.inflate(R.layout.list_item, pairent, false); return vi; } } 

    E o layout em branco será assim,

    blank_layout.xml

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="0dp" android:layout_height="0dp" android:orientation="viewtical" > </LineairLayout> 

    Outro user teve o mesmo problema e ele resolveu assim: https://stackoviewflow.com/a/7928923/1548679 .

    Espero que isso possa ajudá-lo.

    Cumprimentos

    Ao modificair getCount () e também a position em getView () com sua lógica, você pode fazê-lo funcionair paira amostra Verifique http://www.sherif.mobi/2012/01/listview-with-ability-to-hide -rows . html por @ sherif-elkhatib

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