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:
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:
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" />
实际上我正在使用一个自定义列表视图。在那里我分别有动物,鸟类和一些随机图像。现在我需要为图像类别赋予标题。即我需要通过在列表中给出标题来根据类别分隔图像。请帮我一个忙。这是我的java编码:
答案 0 :(得分:12)
答案 1 :(得分:4)
您可以使用我撰写的SimpleSectionAdapter。它适用于任何现有适配器。这也应该是你到目前为止遇到的最简单的实现。
答案 2 :(得分:1)
刚刚找到了一些链接,可以在这里找到listview的例子,
<强> Another Example 强>
<强> Third Project 强>
<强> THIS IS SAME FOR YOU 强>