Pessoal preciso saber qual componente posso utilizar para rolar a tela com varios listview dentro dela. Com o ScrollView não ta dando certo, porque ai o scrool do listview fica travado.
Eu quero ver se tem uma forma de deixar os listview expandidos com as informações no lugar de ficar rolando.
Alguém pode ajudar
Obrigado.
isso nao resolve?
<ScrollView>
<LinearLayout>
Layout
</LinearLayout>
</ScrollView>
posta como voce fez o xml
[quote=denisspitfire]posta como voce fez o xml[/quote]Então … fiz assim o XML
[code]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/layoutCabecalho"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/barra"
android:gravity="center" >
<LinearLayout
android:id="@+id/layoutCabecalhoEsquerdo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|left" >
<Button
android:id="@+id/botaoVoltar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Voltar"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutCabecalhoCentro"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center" >
<TextView
android:id="@+id/textoTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Informações"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutCabecalhoDireito"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|right" >
</LinearLayout>
</LinearLayout>
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/listaclientes"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/LinearLayout04"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview2"
android:gravity="center" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cliente"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFF" />
</LinearLayout>
<ListView
android:id="@+id/ListViewInformacoesCliente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview"
android:divider="#FFFFFF"
android:scrollbars="none" >
</ListView>
</LinearLayout>
<LinearLayout
android:id="@+id/listatelefone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview2"
android:gravity="center" >
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Telefone(s)"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFF" />
</LinearLayout>
<ListView
android:id="@+id/ListViewInformacoesTelefone"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/shapetextview"
android:scrollbars="vertical" >
</ListView>
</LinearLayout>
<LinearLayout
android:id="@+id/listadetalhes"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview2"
android:gravity="center" >
<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Detalhes"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFF" />
</LinearLayout>
<ListView
android:id="@+id/ListViewDetalhesClientes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview" >
</ListView>
</LinearLayout>
<LinearLayout
android:id="@+id/listavendasgeral"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/LinearLayout05"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview2"
android:gravity="center" >
<TextView
android:id="@+id/TextView05"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vendas - Geral"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFF" />
</LinearLayout>
<ListView
android:id="@+id/ListView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview" >
</ListView>
</LinearLayout>
<LinearLayout
android:id="@+id/listavendasdetalhado"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/LinearLayout03"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview2"
android:gravity="center" >
<TextView
android:id="@+id/TextView04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vendas - Detalhado"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFF" />
</LinearLayout>
<ListView
android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shapetextview" >
</ListView>
</LinearLayout>
</LinearLayout>
</ScrollView>
[/code]
Tentei mudar para ExpandableListView só que deu erro quando chamo aqui
ArrayList<ListaTelefoneCliente> searchResultsTelefone = GetSearchResultsTelefone();
final ExpandableListView lv2 = (ExpandableListView ) findViewById(R.id.ListViewInformacoesTelefone);
lv2.setAdapter(new TelefoneClienteBaseAdapter(this,
searchResultsTelefone));
Obrigado.
mas ainda esta como listView
doug
Março 25, 2013, 6:49pm
#6
Olá
Então eu fiz uma coisa quase igual, eu tinha um cabeçalho e uma lista logo abaixo, dai precisava scrolar a tela…
Dai fiz um método que calcula o tamanho do listview, logo depois de setar os itens… segue o trecho do código que realizada o cálculo.
Detalhe, isso faz remarcar o tamanho do heigth do seu listview.
private void calculeHeightListView() {
int totalHeight = 0;
ListAdapter adapter = commentList.getAdapter();
int lenght = adapter.getCount();
for (int i = 0; i < lenght; i++) {
View listItem = adapter.getView(i, null, commentList);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = commentList.getLayoutParams();
params.height = totalHeight
+ (commentList.getDividerHeight() * (adapter.getCount() - 1));
commentList.setLayoutParams(params);
commentList.requestLayout();
}
Não sei se é o melhor jeito, mas funcionou para mim…
Espero ter ajudado,
[quote=denisspitfire]mas ainda esta como listView[/quote]Não entendi a sua pergunta.
[quote=thiago.filadelfo]Olá
Então eu fiz uma coisa quase igual, eu tinha um cabeçalho e uma lista logo abaixo, dai precisava scrolar a tela…
Dai fiz um método que calcula o tamanho do listview, logo depois de setar os itens… segue o trecho do código que realizada o cálculo.
Detalhe, isso faz remarcar o tamanho do heigth do seu listview.
private void calculeHeightListView() {
int totalHeight = 0;
ListAdapter adapter = commentList.getAdapter();
int lenght = adapter.getCount();
for (int i = 0; i < lenght; i++) {
View listItem = adapter.getView(i, null, commentList);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = commentList.getLayoutParams();
params.height = totalHeight
+ (commentList.getDividerHeight() * (adapter.getCount() - 1));
commentList.setLayoutParams(params);
commentList.requestLayout();
}
Não sei se é o melhor jeito, mas funcionou para mim…
Espero ter ajudado,
[/quote]Olá, tentei adaptar esta função sua aqui, mais da erro.
Obrigado.
doug
Março 25, 2013, 7:50pm
#9
adriano_servitec
Por favor poderia postar o erro exibido?
No aguardo,
[quote=thiago.filadelfo]adriano_servitec
Por favor poderia postar o erro exibido?
No aguardo,[/quote]Então Thiago, não manjo quase nada de java, então pode ser que tenha feito algo errado
Fiz o método conforme vc postou ai ai coloquei a variavel como ListView ListView commentList Não sei se esta certo isso, mais quando chega aqui ListAdapter adapter = commentList.getAdapter(); causa o erro conforme logcat.
Estou chamando este método no onCreate da tela.
Obrigado.
doug
Março 26, 2013, 11:50am
#11
Olá adriano_servitec
Ahhh, realmente falha minha, esqueci de comentar o que seria esse commentList
Bom, o commentList é o componente ListView da minha tela…
Dai vc no método - onCreate(Bundle bundle), armazena na variável.
fica mais ou menos assim
public class <Classe> extends Activity {
private ListView commentList;
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.<layout-arquivo.xml>);
commentList = (ListView) findViewById(R.id.<componente listview do layout>);
....
}
...
private void calculeHeightListView.... {
}
}
Malz não ter explicado, esqueci completamente… só lembrava que tinha feito isso e tinha o código.
Editado:
Não chame esse método, antes de setar o seu adapter, pq ele pega os componentes (itens a itens) para calcular o tamanho do item… como não há item pode ocorrer um erro.
Então minha sugestão é chamar logo após a criação do seu Adapter… aonde está com o array populado.
Espero ter ajudado,
Maravilha thiago.filadelfo deu certo. Muito obrigado.
Somente deu um pequeno problema que na lista do telefone, o ultimo sempre corta um pouco das letras.
doug
Março 26, 2013, 2:21pm
#13
Olá
Então acho que tem duas formas de resolver:
Ajuste no totalHeight;
Na linha 267 do seu print,
params.height = totalHeight + (commentList.getDividerHeight()) * (adapter.getCount() - 1);
Você faz isso um magic numero (ajuste), eu chutei 10… mas tem que ir vendo.
params.height = (totalHeight + (commentList.getDividerHeight()) * (adapter.getCount() - 1)) + (10);
Talvez seja uma solução, deixar no seu layout.xml (tela), ajustar o seu list para os height e width = match_parent
<ListView
android:id="@+id/detail_timelineview_comments"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/layout_style_footer_post"
android:choiceMode="none"
android:scrollbars="none" >
</ListView>
Espero que funcione, eu tenho certeza que a primeira solução dá certo, mas a segunda não sei, é meio ruim, mas as vezes acontece…
abraços
[quote=thiago.filadelfo]Olá
Então acho que tem duas formas de resolver:
Ajuste no totalHeight;
Na linha 267 do seu print,
params.height = totalHeight + (commentList.getDividerHeight()) * (adapter.getCount() - 1);
Você faz isso um magic numero (ajuste), eu chutei 10… mas tem que ir vendo.
params.height = (totalHeight + (commentList.getDividerHeight()) * (adapter.getCount() - 1)) + (10);
Talvez seja uma solução, deixar no seu layout.xml (tela), ajustar o seu list para os height e width = match_parent
<ListView
android:id="@+id/detail_timelineview_comments"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/layout_style_footer_post"
android:choiceMode="none"
android:scrollbars="none" >
</ListView>
Espero que funcione, eu tenho certeza que a primeira solução dá certo, mas a segunda não sei, é meio ruim, mas as vezes acontece…
abraços[/quote]Ótimo thiago.filadelfo, a primeira solução resolveu.
Muito obrigado amigo.