Home  >  Article  >  Java  >  How to Create a ListView with a Static Header and Dynamic Text in Each Row?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-01 07:16:30504browse

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>

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>

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>

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!

Statement:
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