如何添加部分标题为自定义列表视图在android系统? [英] How to add section header to custom list view in android?

查看:131
本文介绍了如何添加部分标题为自定义列表视图在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();

    }
}

下面是我的list.xml:

Here 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"/>

下面是我的listview.xml:

Here 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" />

其实我使用一个自定义列表视图。在我分别有动物,鸟类和一些随机图像。现在,我需要给标题图像的类别。即我需要根据列表给予标题类别单独的图像。请帮我需要FUL。这是我的Java代码:

Actually I am using one custom list view. In that I have animals, birds and some random images respectively. Now I need to give title to the categories of images. i.e i need to seperate the images according to the category by giving title in the list. Please do me a need ful. Here is my java coding:

推荐答案

这里是使用一个完整的例子节头有一个很好的解释,也是。您也可以下载源$ C ​​$ c和结帐它是如何工作。

Here is a complete example of using Section Header with a nice explanation as well. You can also download the source code and checkout how it works.

更新

您还可以看看我的博客文章

这篇关于如何添加部分标题为自定义列表视图在android系统?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆