simpleAdapter图片实现过程


示例代码:

后台逻辑:

package com.hsj.example.advcontroldemo01;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.Gallery;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends AppCompatActivity {    private Gallery gallery;    /**     * 声明简单适配器对象     */    private SimpleAdapter adapter;    /**     * 声明数据源对象     */    private List> data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        this.gallery= (Gallery) this.findViewById(R.id.gallery);        try {            this.adapter=this.getAdapter();            this.gallery.setAdapter(adapter);            //注册当条目被选中时对应的监听器对象            this.gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {                /**                 * 当条目被选中时自动调用的方法                 * @param parent                 * @param view                 * @param position                 * @param id                 */                @Override                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                    //1.根据数据源获取                    //Map map=data.get(position);                    //String name=map.get("name").toString();                    //2.根据适配器对象获取数据                   // Map map= (Map) adapter.getItem(position);                    //String name=map.get("name").toString();                    //3.根据适配器控件获取数据                    //Map map= (Map)parent.getItemAtPosition(position);                    //String name=map.get("name").toString();                    System.out.println("==onItemSelected(AdapterView<?> parent="+parent+", View view="+view+", int position="+position+", long id="+id+")==");                    //4.根据用户点击的条目获取数据                    TextView textView_name= (TextView) view.findViewById(R.id.textView_name);                    String name=textView_name.getText().toString();                    Toast.makeText(getApplicationContext(),"name="+name, Toast.LENGTH_LONG).show();                }                @Override                public void onNothingSelected(AdapterView<?> parent) {                }            });            this.gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {                @Override                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                    Map map=data.get(position);                    String name=map.get("name").toString();                    Toast.makeText(getApplicationContext(),"name="+name, Toast.LENGTH_LONG).show();                }            });        } catch (IllegalAccessException e) {            e.printStackTrace();        }    }    /**     * 返回适配器对象     * @return     */    private SimpleAdapter getAdapter() throws IllegalAccessException {        data=getData();        adapter=new SimpleAdapter(                this,//上下文对象                data,//数据源                R.layout.gallery_item,//gallery 控件每一个条目对象对应的布局文件的id值                new String[]{"header","name"},//数据源中Map的键值组成的字符串数组                new int[]{R.id.imageView_header,R.id.textView_name} //gallery 控件每一个条目对象中控件的id值组成的int数组        );        return adapter;    }    /**     * 返回数据源对象     * @return     */    /*private List> getData() {        data=new ArrayList<>();        for(int i=0;i<24;i++){            Map map=new HashMap<>();            map.put("header",R.drawable.png_01+i);            map.put("name","小丽"+i);            data.add(map);        }        return data;    }*/    /**     * 使用反射获取数据源     * @return     */    private List> getData() throws IllegalAccessException {        data=new ArrayList<>();        /*        获取类模板Class对象的方式有哪些?        A:Class clz=对象名.getClass()        B:Class clz=类名.class        C:Class clz=Class.forName("类名字符串")         */        //获取类模板对象        Class clz=R.drawable.class;        //获取R.drawale 类中所有的字段对象        //clz.getFields();//获取本类及其父类中所有使用public修饰的字段对象         Field[] fields=clz.getDeclaredFields();//获取本类中所有字段,不管访问修饰符是什么,但不包括父类中的字段        //System.out.println(fields.length);        int count=0;        int len=fields.length;        for(int i=0;i map=new HashMap<>();                //获取字段的值                Object fieldValue=field.get(null);                map.put("header",fieldValue);                map.put("name","小丽"+count++);                data.add(map);            }        }        return data;    }}
注意事项:这里要在res文件下添加一个自定义的xml文件。。。






更多相关文章

  1. 类和 Json对象
  2. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  3. Android更新UI的五种方式
  4. android监听当前应用
  5. 获取Android(安卓)Device的信息
  6. Android中获取应用程序(包)的信息-----PackageManager的使用(一)
  7. Android(安卓)JSON 解析
  8. Android轻量级JSON操作类
  9. android 入门demo 解析xml

随机推荐

  1. Learning Android(安卓)- 第0章 - 我印象
  2. Android中使用语音引擎入门七步曲
  3. 谷歌Q3推Android本 蚕食自己平板市场
  4. 从三流外包摇身变成阿里P6(Android开发岗),
  5. Android(安卓)layout之优化:使用include和
  6. Android自定义View的实现方法,带你一步步
  7. android 各个span类详解--用于富文本的编
  8. 年末呼声最高的 Android(安卓)中高级面试
  9. Android(安卓)layout 使用include和merge
  10. 百度,腾讯,字节,阿里等一线大厂 Android(安