适配器的应用

本文介绍了一个简单的 Android 应用示例,使用 ListView 显示一组水果名称和对应的图标。通过创建自定义适配器 SimpleAdapter 实现数据绑定,并展示了如何初始化数据源及设置布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布局文件activity_main.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/lvfruits"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

    </ListView>

 

</RelativeLayout>


MainActivity.java

package cn.edu.bzu.androidboke;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import cn.edu.bzu.adapter.FruitAdapter;
import cn.edu.bzu.fruits.Fruits;
import cn.edu.bzu.adapter.*;

public class MainActivity extends Activity {

 //@Override准备数据的操作
 /*创建适配器绑定数据与图片之间的关联fruitName和fruiticon*/
 private ListView lvfruits;
 private List<Fruits>  fruitList=new ArrayList<Fruits>();
 List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();
 private String[]fruitName={"Apple", "Banana", "Orange", "Watermelon",
   "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };
 private int[]fruitIcon={R.drawable.apple_pic,R.drawable.banana_pic,R.drawable.cherry_pic,R.drawable.grape_pic,R.drawable.mango_pic,R.drawable.orange_pic,R.drawable.pear_pic,
   R.drawable.pineapple_pic,R.drawable.strawberry_pic,R.drawable.watermelon_pic};
 
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //调用方法准备数据
  initFruits();
  //查找组建
  lvfruits=(ListView) findViewById(R.id.lvfruits);
  //创建adapter 
  //绑定AdapterView与Adapter之间的关联  
  SimpleAdapter simpleadapter=new SimpleAdapter(this, data,R.layout.fruit_item, new String[]{"fruitName","fruitIcon"}, new int[]{R.id.tvfruit,R.id.ivfruit});
  lvfruits.setAdapter(simpleadapter);
  
 }

 private void initFruits() {
  // TODO Auto-generated method stub
  for(int i=0;i<fruitName.length;i++){
   Map<String,Object>  item=new  HashMap<String,Object>();
   item.put("fruitIcon",fruitIcon[i] );
   item.put("fruitName", fruitName[i]);
   data.add(item);  }    
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}

 

 

package cn.edu.bzu.fruits;

public class Fruits {
 private String Name;
 private int FruitId;
 public String getName() {
  return Name;
 }
 public void setName(String name) {
  Name = name;
 }
 public int getFruitId() {
  return FruitId;
 }
 public void setFruitId(int fruitId) {
  FruitId = fruitId;
 }
 public int getImageId() {
  // TODO Auto-generated method stub
  return 0;
 }
}

布局文件fruit_item.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="horizontal" >

    <ImageView
        android:id="@+id/ivfruit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/apple_pic" />

    <TextView
        android:id="@+id/tvfruit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="Apple"
        android:textSize="24dp" />

</LinearLayout>

package cn.edu.bzu.adapter;

import cn.edu.bzu.androidboke.R;
import cn.edu.bzu.fruits.Fruits;

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 {
 private int resourceId;
 public FruitAdapter(Context context, int resource, int textViewResourceId) {
  super(context, resource, textViewResourceId);
  resourceId=textViewResourceId;
  // TODO Auto-generated constructor stub
 }

 public View getView(int position,View convertView,ViewGroup parent){
  //此方法当每个子项被滚动到的时候都会被调用
  Fruits fruit = (Fruits) getItem(position);
  //把子项的图片和文字转换为View  
  View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
  //设置被滚动到的图片和文字
  ImageView fruitImage = (ImageView) view.findViewById(R.id.ivfruit);
  TextView fruitName = (TextView) view.findViewById(R.id.tvfruit);
  fruitImage.setImageResource(fruit.getFruitId());
  fruitName.setText(fruit.getName());
  return view;
 }

}

实现效果



 

 

 

 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值