【实验】ListView、bundle的使用

来源:互联网 发布:电国网络电视直播台 编辑:程序博客网 时间:2024/05/16 17:01


主要内容:

从跳转到另一个界面,并且可以返回。

                                                               

                           图一                                                                                                                        图二



xml:

item:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal"    tools:context=".MainActivity" >   <ImageView        android:id="@+id/image"       android:layout_width="50dp"       android:layout_height="50dp"/>      <TextView        android:id="@+id/name"       android:layout_width="wrap_content"       android:layout_height="wrap_content"/></LinearLayout>


activity_main:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity" >       <ListView         android:id="@+id/list"        android:layout_width="fill_parent"        android:layout_height="wrap_content">            </ListView></LinearLayout>


activity_main2:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity" >       <TextView         android:id="@+id/tv"        android:layout_gravity="center"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/>        <Button         android:id="@+id/btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:text="back"/></LinearLayout>


第一种方法是使用SimpleAdapter:

package com.example.lab3;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity {ListView list;private List<Map<String,Object>> mDataList = new ArrayList<Map<String,Object>>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();setData();  //为mDataList添加元素//为ListView添加元素的适配器    SimpleAdapter listItemAdapter = new SimpleAdapter(this,       mDataList,       R.layout.item,       new String[]{"name","image"},       new int[]{R.id.name,R.id.image});           //ListView关联适配器    list.setAdapter(listItemAdapter);            //定义适配器的各个点击事件    list.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {Bundle bundle = new Bundle();String fruitName ="";switch(arg2){case 0:fruitName = "apple";//bundle.putString("fruit", "apple");break;    case 1:fruitName = "banana";//bundle.putString("fruit", "banana");//Toast.makeText(MainActivity.this, "1", Toast.LENGTH_LONG).show();break;case 2:fruitName = "cherry";//bundle.putString("fruit", "cherry");//Toast.makeText(MainActivity.this, "2", Toast.LENGTH_LONG).show();break;case 3:fruitName = "coco";break;case 4:fruitName = "kiwi";break;case 5:fruitName = "orange";break;case 6:fruitName = "pear";break;case 7:fruitName = "strawberry";break;case 8:fruitName = "watermelon";break;default:break;}bundle.putString("fruit", fruitName);Intent intent = new Intent(MainActivity.this, MainActivity2.class);intent.putExtras(bundle);startActivity(intent);}});}public void init(){list = (ListView)findViewById(R.id.list);}public void setData()    {    Map<String,Object> map = new HashMap<String,Object>();    map.put("name", "Apple");    map.put("image", R.drawable.apple);    mDataList.add(map);        map = new HashMap<String,Object>();    map.put("name", "Banana");    map.put("image", R.drawable.banana);    mDataList.add(map);            map = new HashMap<String,Object>();    map.put("name", "Cherry");    map.put("image", R.drawable.cherry);    mDataList.add(map);        map = new HashMap<String,Object>();    map.put("name", "Coco");    map.put("image", R.drawable.coco);    mDataList.add(map);        map = new HashMap<String,Object>();    map.put("name", "Kiwi");    map.put("image", R.drawable.kiwi);    mDataList.add(map);        map = new HashMap<String,Object>();    map.put("name", "Orange");    map.put("image", R.drawable.orange);    mDataList.add(map);            map = new HashMap<String,Object>();    map.put("name", "Pear");    map.put("image", R.drawable.pear);    mDataList.add(map);        map = new HashMap<String,Object>();    map.put("name", "Strawberry");    map.put("image", R.drawable.strawberry);    mDataList.add(map);        map = new HashMap<String,Object>();    map.put("name", "Watermelon");    map.put("image", R.drawable.watermelon);    mDataList.add(map);    }}/* *  * 1.init()位置 * 2.break的使用; *  *  */


然后跳转到MainActivity2:

package com.example.lab3;import android.app.Activity;import android.content.Intent;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity2 extends Activity{    TextView tv;Button btn;@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);                init();                        Bundle bundle = new Bundle();        bundle = this.getIntent().getExtras();        String fruit = bundle.getString("fruit");  //获取标签为fruit的内容        tv.setText("I love " + fruit + "!!!");        tv.setTextColor(Color.RED);        //设置字体颜色                btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//Intent intent_back = new Intent(MainActivity2.this, MainActivity.class);//startActivity(intent_back);finish();  //finish()可以避免了上述方法中新建一个activity的冗赘}});        }public void init(){tv = (TextView)findViewById(R.id.tv);btn = (Button)findViewById(R.id.btn);}}


或者是自定义一个FruitAdapter方法。

首先是Fruit一个类的定义:

/* * 定义一个Fruit类,封装name和image */package com.example.lab3;public class Fruit {private String name;private int imageId;public Fruit(String name,int imageId){this.name = name;this.imageId = imageId;}public String getName(){return name;}public int getImageId(){return imageId;}}

然后自定义适配器:

/* * 自定义一个适配器 */package com.example.lab3;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;public class FruitAdapter extends ArrayAdapter<Fruit> {private int resourceId;public FruitAdapter(Context context, int textViewResourceId,List<Fruit> fruits) {super(context,  textViewResourceId, fruits);// TODO Auto-generated constructor stub    resourceId = textViewResourceId;}@Overridepublic View getView(int position,View convertView,ViewGroup parent){Fruit fruit = getItem(position);View view = LayoutInflater.from(this.getContext()).inflate(resourceId,null);ImageView fruitImage = (ImageView)view.findViewById(R.id.image);TextView fruitName = (TextView)view.findViewById(R.id.name);fruitImage.setImageResource(fruit.getImageId());fruitName.setText(fruit.getName());return view;}}


最后是MainActivity3:

package com.example.lab3;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.ListView;public class MainActivity3 extends Activity {private List<Fruit> fruitList = new ArrayList<Fruit>();ListView list;FruitAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);fruitList.add(new Fruit("apple",R.drawable.apple));fruitList.add(new Fruit("banana",R.drawable.banana));fruitList.add(new Fruit("cherry",R.drawable.cherry));fruitList.add(new Fruit("coco",R.drawable.coco));fruitList.add(new Fruit("kiwi",R.drawable.kiwi));fruitList.add(new Fruit("orange",R.drawable.orange));fruitList.add(new Fruit("pear",R.drawable.pear));fruitList.add(new Fruit("strawberry",R.drawable.strawberry));fruitList.add(new Fruit("watermelon",R.drawable.watermelon));adapter = new FruitAdapter(MainActivity3.this, R.layout.item, fruitList);list = (ListView)findViewById(R.id.list);//ListView关联适配器    list.setAdapter(adapter);list.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stub                Bundle bundle = new Bundle();String fruitName ="";switch(arg2){case 0:fruitName = "apple";//bundle.putString("fruit", "apple");break;    case 1:fruitName = "banana";//bundle.putString("fruit", "banana");//Toast.makeText(MainActivity.this, "1", Toast.LENGTH_LONG).show();break;case 2:fruitName = "cherry";//bundle.putString("fruit", "cherry");//Toast.makeText(MainActivity.this, "2", Toast.LENGTH_LONG).show();break;case 3:fruitName = "coco";break;case 4:fruitName = "kiwi";break;case 5:fruitName = "orange";break;case 6:fruitName = "pear";break;case 7:fruitName = "strawberry";break;case 8:fruitName = "watermelon";break;default:break;}bundle.putString("fruit", fruitName);Intent intent = new Intent(MainActivity3.this, MainActivity2.class);intent.putExtras(bundle);startActivity(intent);}});list.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stubfruitList.remove(arg2);list.setAdapter(adapter);return false;}});}}


注:两种方法共用了MainActivity2的界面,以后还是第二种方法比较常见。


0 0
原创粉丝点击