Como adicionar um rodapé no ListView?
-
27-09-2019 - |
Pergunta
Estou desenvolvendo um aplicativo, no meu aplicativo, estou usando o ListView para exibir dados usando o DOM Parsing, quero rodar no listView, quando clicar no rodapé adicional mais dados adicionar para a visualização da lista, eu anexei a imagem, gostaria desse design e Processo, consulte Image1 e imgae2.i mencione o rodapé em retângulo vermelho
Fig1 pés como "mais notícias"
Fig2-ADD REGISTRO ADICIONAL DO 10 ADICIONADO NA LISTVIEL
Solução
Crie um layout de visualização de rodapé composto por texto que você deseja definir como rodapé e depois tente
View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);
O layout para rodapé pode ser algo assim:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="7dip"
android:paddingBottom="7dip"
android:orientation="horizontal"
android:gravity="center">
<LinearLayout
android:id="@+id/footer_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_gravity="center">
<TextView
android:text="@string/footer_text_1"
android:id="@+id/footer_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dip"
android:textStyle="bold"
android:layout_marginRight="5dip" />
</LinearLayout>
</LinearLayout>
A classe de atividade pode ser:
public class MyListActivty extends ListActivity {
private Context context = null;
private ListView list = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
list = (ListView)findViewById(android.R.id.list);
//code to set adapter to populate list
View footerView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
list.addFooterView(footerView);
}
}
Outras dicas
Eu sei que essa é uma pergunta muito antiga, mas pesquisei no meu caminho aqui e encontrei a resposta não é 100% gratificante, porque como o GCL1 mencionou - dessa maneira o rodapé não é realmente um rodapé na tela - é apenas um "complemento "Para a lista.
Resumindo - para outras pessoas que podem pesquisar no Google aqui - encontrei a seguinte sugestão aqui: Footeiro fixo e sempre visível abaixo da lista de listas
Tente fazer o seguinte, onde a ênfase está no botão (ou em qualquer elemento do rodapé) listado primeiro no XML - e depois a lista é adicionada como "layout_above":
<RelativeLayout>
<Button android:id="@+id/footer" android:layout_alignParentBottom="true"/>
<ListView android:id="@android:id/list" **android:layout_above**="@id/footer"> <!-- the list -->
</RelativeLayout>
As respostas aqui estão um pouco desatualizadas. Embora o código permaneça o mesmo, existem algumas mudanças no comportamento.
public class MyListActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false);
getListView().addFooterView(footerView);
setListAdapter(new ArrayAdapter<String>(this, getResources().getStringArray(R.array.news)));
}
}
Informações sobre addFooterView()
método
Adicione uma vista fixa para aparecer na parte inferior da lista. Se
addFooterView()
é chamado mais de uma vez, as vistas aparecerão na ordem em que foram adicionadas. As visualizações adicionadas usando esta chamada podem aceitar o foco, se quiserem.
A maioria das respostas acima do estresse muito importante - ponto -
addFooterView()
deve ser chamado antes de ligarsetAdapter()
.Este é assim que a ListView pode embrulhar o cursor fornecido com um que também explicará as visualizações de cabeçalho e rodapé.
De Kitkat, isso mudou.
Nota: Quando introduzido pela primeira vez, esse método só poderia ser chamado antes de definir o adaptador com o setadapter (ListAdapter). Começando pelo Kitkat, esse método pode ser chamado a qualquer momento. Se o adaptador do ListView não estender o HeaderViewListAdapter, ele será embrulhado com uma instância de suporte do WrapperListAdapter.
Se o ListView for um filho da ListActivity:
getListView().addFooterView(
getLayoutInflater().inflate(R.layout.footer_view, null)
);
(Inside onCreate ())
A atividade na qual você deseja adicionar o Footer ListView e eu também gero um evento no Footer ListView Clique.
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list_of_f = (ListView) findViewById(R.id.list_of_f);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.web_view, null); // i have open a webview on the listview footer
RelativeLayout layoutFooter = (RelativeLayout) view.findViewById(R.id.layoutFooter);
list_of_f.addFooterView(view);
}
}
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg" >
<ImageView
android:id="@+id/dept_nav"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dept_nav" />
<ListView
android:id="@+id/list_of_f"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/dept_nav"
android:layout_margin="5dp"
android:layout_marginTop="10dp"
android:divider="@null"
android:dividerHeight="0dp"
android:listSelector="@android:color/transparent" >
</ListView>
</RelativeLayout>
Nesta pergunta, a melhor resposta não funciona para mim. Depois disso, encontrei este método para mostrar o listView Footer,
LayoutInflater inflater = getLayoutInflater();
ViewGroup footerView = (ViewGroup)inflater.inflate(R.layout.footer_layout,listView,false);
listView.addFooterView(footerView, null, false);
E crie um novo layout chamado Footer_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Done"
android:textStyle="italic"
android:background="#d6cf55"
android:padding="10dp"/>
</LinearLayout>
Se não funcionar, consulte este artigo ouvir