How to add a section title to a custom list view in Android?

package com.VRG;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Practice extends Activity {
    MediaPlayer mp;
    private Integer prac_sounds[] = { R.raw.cow, R.raw.camel, R.raw.dog,
            R.raw.donkey, R.raw.elephant, R.raw.horse, R.raw.lion, R.raw.rhino,
            R.raw.sheep, R.raw.wolf, R.raw.crow, R.raw.dove, R.raw.duck,
            R.raw.eagle, R.raw.owl, R.raw.parrot, R.raw.rooster, R.raw.cuckoo,
            R.raw.peocock, R.raw.sparrow };

    /** Called when the activity is first created. */

    // I use HashMap arraList which takes objects

    private ArrayList<HashMap<String, Object>> myimages;

    private static final String IMAGEKEY = "imagename";
    private static final String PRICEKEY = "bookprice";

    private static final String IMGKEY = "Images from Drawable";

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.list);

        ListView listView = (ListView) findViewById(R.id.list);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> av, View v, int pos, long id) {

                Log.i("111111111111111111", "" + mp);
                // if ()

                if (mp != null) {
                    if (mp.isPlaying()) {
                        mp.stop();
                    }
                }
                mp = MediaPlayer.create(Practice.this, prac_sounds[pos]);
                mp.seekTo(0);
                mp.start();
                mp.setOnCompletionListener(new OnCompletionListener() {

                    @Override
                    public void onCompletion(MediaPlayer mpalmost) {
                        try {
                            mp.prepare();
                            Log.i("prepare", "during preparing");
                        } catch (IllegalStateException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        mp.reset();
                        Log.i("reset", "during resetting");
                        // mp = null;

                    }
                });
            }

        });

        myimages = new ArrayList<HashMap<String, Object>>();

        HashMap<String, Object> hm;

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "cow");
        hm.put(IMGKEY, R.drawable.cow);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "camel");
        hm.put(IMGKEY, R.drawable.camel);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "dog");
        hm.put(IMGKEY, R.drawable.dog);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "donkey");
        hm.put(IMGKEY, R.drawable.donkey);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "elephant");
        hm.put(IMGKEY, R.drawable.elephant);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "horse");
        hm.put(IMGKEY, R.drawable.horse);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "lion");
        hm.put(IMGKEY, R.drawable.lion);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "rhino");
        hm.put(IMGKEY, R.drawable.rhinos);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "sheep");
        hm.put(IMGKEY, R.drawable.sheep);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "wolf");
        hm.put(IMGKEY, R.drawable.wolf);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "crow");
        hm.put(IMGKEY, R.drawable.crow);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "dove");
        hm.put(IMGKEY, R.drawable.dove);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "duck");
        hm.put(IMGKEY, R.drawable.duck);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "eagle");
        hm.put(IMGKEY, R.drawable.eagle);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "owl");
        hm.put(IMGKEY, R.drawable.owl);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "parrot");
        hm.put(IMGKEY, R.drawable.parrot);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "rooster");
        hm.put(IMGKEY, R.drawable.rooster);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "cuckoo");
        hm.put(IMGKEY, R.drawable.cuckoo);
        myimages.add(hm);


        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "peocock");
        hm.put(IMGKEY, R.drawable.peocock);
        myimages.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(IMAGEKEY, "sparrow");
        hm.put(IMGKEY, R.drawable.sparrow);
        myimages.add(hm);


        listView.setAdapter(new mylistadapter(myimages, this));

        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        // listView.setStackFromBottom(false);

    }

    private class mylistadapter extends BaseAdapter {

        private ArrayList<HashMap<String, Object>> IMAGES;

        private LayoutInflater mInflater;

        public mylistadapter(ArrayList<HashMap<String, Object>> images,
                Context context) {

            IMAGES = images;

            mInflater = LayoutInflater.from(context);

        }

        @Override
        public int getCount() {

            return IMAGES.size();

        }

        @Override
        public Object getItem(int position) {

            return IMAGES.get(position);

        }

        @Override
        public long getItemId(int position) {

            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder;

            if (convertView == null) {

                convertView = mInflater.inflate(R.layout.listview, null);

                // Creates a ViewHolder and store references to the two children
                // views

                // we want to bind data to.
                holder = new ViewHolder();

                holder.v = (TextView) convertView.findViewById(R.id.text1);

                holder.v1 = (TextView) convertView.findViewById(R.id.text2);

                holder.icon = (ImageView) convertView.findViewById(R.id.img);

                // holder.rating =
                // (ratingBar)convertView.findViewById(R.id.star);

                convertView.setTag(holder);

            } else {

                // Get the ViewHolder back to get fast access to the TextView

                // and the ImageView.

                holder = (ViewHolder) convertView.getTag();

            }

            // Bind the data with the holder.

            holder.v.setText((String) IMAGES.get(position).get(IMAGEKEY));

            holder.v1.setText((String) IMAGES.get(position).get(PRICEKEY));

            holder.icon.setImageResource((Integer) IMAGES.get(position).get(
                    IMGKEY));

            return convertView;

        }

        class ViewHolder {

            TextView v;

            TextView v1;

            ImageView icon;

        }

    }

    public void onBackPressed() {
        Log.v("44444", "onBackPressed Called");
        if (mp != null) {
            if (mp.isPlaying()) {
                mp.stop();
            }

        }
        finish();

    }

    public void onKeyDown() {
        onBackPressed();

    }
}

This is my list.xml:

android:orientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

<ListView android:layout_width="fill_parent"

    android:layout_height="fill_parent" android:id="@+id/list"/>

This is my listview.xml:

android:layout_width="wrap_content" android:orientation="horizontal"

android:layout_height="wrap_content">

<LinearLayout android:layout_width="265dip"

    android:orientation="vertical" android:layout_height="wrap_content">

    <TextView android:layout_width="fill_parent"

        android:layout_height="wrap_content" android:id="@+id/text1"

        android:textSize="25dip" android:text="This is text1" />
    <ImageView android:layout_height="wrap_content" android:src="@drawable/speak" android:id="@+id/imageView1" android:layout_width="wrap_content"></ImageView>

    <TextView android:layout_width="fill_parent"

        android:id="@+id/text2"

        android:text="This is text2" android:layout_height="wrap_content"/>

</LinearLayout>

<ImageView android:layout_width="55dip"

    android:layout_height="fill_parent" android:id="@+id/img" />

In fact, I'm using a custom list view. There I have animals, birds and some random images. Now I need to give titles to image categories. That is, I need to separate images according to categories by giving titles in the list. Please do me a favor. This is my java code:

resolvent:

Here is a complete example of using section header with a good explanation. You can also download the source code and see how it works

UPDATE

You can also see my blog post

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>