Frage

Ich bin eine Anwendung zu entwickeln, In meiner Anwendung verwende ich Listview für Daten mit dom Parsing Anzeige, ich will Fußzeile in Listenansicht, wenn ich Fußzeile klicken, um zusätzliche Daten mehr zur Listenansicht hinzufügen, ich Bild angehängt, würde Ich mag dass Design und Prozess, bitte image1 und imgae2.I Erwähnung Fußzeile in roten Rechteck beziehen

Abb1-Footer wie "Mehr News"
alt text

alt text

Fig2-In weitere 10 Datensatz in Listview hinzugefügt

War es hilfreich?

Lösung

Erstellen Sie eine Fußzeile Ansicht Layout von Text aus, dass Sie als Fußzeile festlegen möchten, und dann versuchen,

View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);

Layout für Fußzeile so etwas wie dies sein könnte:

<?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> 

Die Aktivitätsklasse könnte sein:

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);
    }
}

Andere Tipps

Ich weiß, das ist eine sehr alte Frage, aber ich gegoogelt meinen Weg hier und fand die Antwort zur Verfügung gestellt nicht zu 100% erfüllt, denn wie gcl1 erwähnt - auf diese Weise der Fußzeile nicht wirklich eine Fußzeile auf den Bildschirm ist - es ist nur ein " Add-on“auf die Liste.

Unterm Strich - für andere, die ihren Weg hier wird Google - ich folgenden Vorschlag finden Sie hier: Feste und immer sichtbar Fußzeile unterhalb ListFragment

Versuchen Sie wie folgt tun, wo der Schwerpunkt auf der Schaltfläche (oder ein Footer-Elemente) ist zuerst in der XML - und dann wird die Liste hinzugefügt als „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>

hier Antworten sind ein bisschen veraltet. Obwohl der Code gleich bleibt gibt es einige Veränderungen im Verhalten.

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)));
    }
}

Info über addFooterView() Methode

  

Fügen Sie einen festen Blick auf den unteren Rand der Liste erscheinen. Wenn addFooterView() wird mehr als einmal aufgerufen, erscheinen die Ansichten in der Reihenfolge ihrer hinzugefügt. Ansichten hinzugefügt diesen Aufruf kann Fokus nehmen, wenn sie wollen.

Die meisten Antworten über Stress sehr wichtigen Punkt -

  

addFooterView() muss vor dem Aufruf setAdapter().This aufgerufen werden, so Listview das mitgelieferte Cursor mit einer wickeln können, die auch für Kopf- und Fußzeilen Ansichten ausgemacht werden.

Von Kitkat dies geändert hat.

  

Hinweis: Wenn Sie zum ersten Mal eingeführt, könnte diese Methode nur, bevor Sie den Adapter mit setAdapter aufgerufen werden (ListAdapter). Beginnend mit KITKAT Dieses Verfahren kann jederzeit aufgerufen werden. Wenn die Listenansicht des Adapters nicht HeaderViewListAdapter verlängert, wird es mit einer Stütz Instanz WrapperListAdapter gewickelt werden.

Dokumentation

Wenn das Listview ist ein Kind des ListActivity:

getListView().addFooterView(
    getLayoutInflater().inflate(R.layout.footer_view, null)
);

(innen onCreate ())

Die Aktivität in dem Sie Listview Fußzeile hinzufügen möchten, und ich habe auch ein Event auf Listview Fußzeile Klick erzeugen.

  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>

In dieser Frage, beste Antwort nicht für mich arbeiten. Danach habe ich diese Methode gefunden Listenansicht Fußzeile zu zeigen,

LayoutInflater inflater = getLayoutInflater();
ViewGroup footerView = (ViewGroup)inflater.inflate(R.layout.footer_layout,listView,false);
listView.addFooterView(footerView, null, false);

Und schafft neues Layout Aufruf 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>

Wenn die Arbeit nicht in diesem Artikel beziehen sich hören

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top