Je développe une application. Dans mon application, j'utilise Listview pour afficher des données à l'aide de l'analyse syntaxique. Je souhaite passer en bas de page dans Listview. processus, veuillez vous reporter aux images1 et imgae2.Je mentionne le pied de page dans le rectangle rouge
Fig1-Footer like "More News"
Fig2-Add additionnel 10 enregistrement ajouté dans listview
Créez une disposition de vue de pied de page composée du texte que vous souhaitez définir comme pied de page, puis essayez
View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);
La mise en page pour le pied de page pourrait ressembler à ceci:
<?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>
La classe d'activité pourrait être:
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);
}
}
Les réponses ici sont un peu dépassées. Bien que le code reste le même, il y a quelques changements dans le comportement.
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)));
}
}
Informations sur la méthode addFooterView()
Ajouter une vue fixe pour apparaître au bas de la liste. Si
addFooterView()
est appelé plusieurs fois, les vues apparaissent dans l'ordre dans lequel elles ont été ajoutées. Les vues ajoutées à l'aide de cet appel peuvent prendre le focus si elles le souhaitent.
La plupart des réponses ci-dessus soulignent un point très important -
addFooterView()
doit être appelé avant d'appelersetAdapter()
. ListView peut ainsi envelopper le curseur fourni avec un curseur tenant également compte des vues d'en-tête et de pied de page.
De KitKat cela a changé.
Remarque: lors de la première introduction, cette méthode ne pouvait être appelée qu'avant de définir l'adaptateur avec setAdapter (ListAdapter). À partir de KitKat, cette méthode peut être appelée à tout moment. Si l'adaptateur de ListView ne s'étend pas sur HeaderViewListAdapter, il sera encapsulé avec une instance de WrapperListAdapter prise en charge.
Je sais que c’est une très vieille question, mais j’ai cherché dans Google et trouvé que la réponse fournie n’était pas satisfaisante à 100%, car, comme l’a mentionné gcl1, le pied de page n’est pas vraiment un pied de page à l’écran - c’est juste un "ajout". "à la liste.
La ligne du bas - pour d'autres qui peuvent google leur chemin ici - j'ai trouvé la suggestion suivante ici: pied de page fixe et toujours visible ci-dessous ListFragment
Essayez de procéder comme suit, en mettant l’accent sur le bouton (ou l’un des éléments de pied de page) énumérés en premier dans le fichier XML, puis ajoutez la liste sous la forme "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>
Si ListView est un enfant de ListActivity:
getListView().addFooterView(
getLayoutInflater().inflate(R.layout.footer_view, null)
);
(dans onCreate ())
L'activité dans laquelle vous souhaitez ajouter un pied de liste et j'ai également générer un événement sur un clic de pied de liste.
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>
Dans cette question, la meilleure réponse ne fonctionne pas pour moi. Après cela, j'ai trouvé cette méthode pour afficher le pied de page de listview,
LayoutInflater inflater = getLayoutInflater();
ViewGroup footerView = (ViewGroup)inflater.inflate(R.layout.footer_layout,listView,false);
listView.addFooterView(footerView, null, false);
Et créez un nouvel appel de disposition 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>
Si cela ne fonctionne pas, référez-vous à cet article entendre