Home > Java > javaTutorial > body text

How to Create a ListView with a Static Header and Dynamic Text in Each Row?

Patricia Arquette
Release: 2024-11-01 07:16:30
Original
577 people have browsed it

How to Create a ListView with a Static Header and Dynamic Text in Each Row?

Customizing ListView Row Layout with Static Header and Dynamic Text

This question concerns the customization of ListView row layouts to include a static header and dynamically changing text. The inquirer has created a ListView with data populated from a String array using an ArrayAdapter, but they encounter difficulty in displaying the desired layout format.

Solution:

To achieve the specified layout, follow these steps:

  1. Create a custom row layout (row.xml) with two TextViews: one for the static header and another for the dynamic text.
  2. Define the RelativeLayout for the main activity XML layout to include the ListView.
  3. Implement a custom adapter that inflates the row layout and sets the data accordingly.

The adapter class includes methods like getCount(), getItem(), getItemId(), and getView(), which handle data handling and view creation.

  1. In the activity's onCreate() method, set the adapter to the ListView.

Here's an example implementation:

row.xml:

<code class="xml"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Header" />

    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text" />
</LinearLayout></code>
Copy after login

main.xml:

<code class="xml"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

</LinearLayout></code>
Copy after login

Custom Adapter:

<code class="java">class yourAdapter extends BaseAdapter {

    ...

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (vi == null)
            vi = inflater.inflate(R.layout.row, null);
        TextView text = (TextView) vi.findViewById(R.id.text);
        text.setText(data[position]);
        return vi;
    }
}</code>
Copy after login

The above is the detailed content of How to Create a ListView with a Static Header and Dynamic Text in Each Row?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template