实现图文混排ListView展示 ---- Android版

使用eclipse创建一个Android Application  创建完成之后,开始java代码的编写

  • 声明变量
    //listview列表
    private ListView listView;
    //数据适配器
    private SimpleAdapter simp_adapter;
    //被展示数据源
    private List<Map<String,Object>>dataList;
     
  • 在res/layout 中创建 main.xml和item.xml ,把main.xml做为展示的主页面 ,那么在MainActivity.java文件中函数onCreat修改为:
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    }
     
  • 在 main.xml 中添加一个listview,(手动拖动控件也会将代码展示到main.xml中)如下:
    <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
    </ListView>
     
  • item.xml文件是布局listview中一栏的图片和文字 。在item.xml文件中添加一个imageview 和 两个 textview,代码如下:
       <ImageView 
            android:id="@+id/pic"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="15dp"
            android:paddingBottom="15dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/aiweier"/>
        
        <TextView 
            android:id="@+id/name"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:textSize="20sp"
            />
        <TextView 
            android:id="@+id/profile"
            android:layout_marginLeft="-60dp"
            android:layout_marginTop="35dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:textSize="15sp"
            />
     
  • 将在MainActivity.java文件中声明的变量实例化
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            listView = (ListView)findViewById(R.id.listView);
            //新建一个数组适配器
            //ArrayAdapter(上下文,当前listview加载的每一个列表项所对应的布局文件,数据源)
            //SimpleAdapter()
            /*
             * context:上下文
             * data:(List<? extends Map<String, ?>> data)一个Map所组成的List集合
             *      每一个map都回去对应了listview列表中的一行
             *      每一个Map(键值对)中的键必须包含所有在from中所指定的键
             * resource:列表项的布局文件ID,与from成对应关系
             * from:Map中的键名
             * to:绑定数据视图中的ID
             */
            //适配器加载数据源
            dataList = new ArrayList<Map<String,Object>>();
            simp_adapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"pic","name","profile"}, new int[]{R.id.pic,R.id.name,R.id.profile});
            //视图加载适配器
            listView.setAdapter(simp_adapter);
        }
     
  • 左侧显示的图片保存在文件/res/drawable-hdpi中,这样我们就可以通过R.drawable.filename获取到图片了,如:R.drawable.fanbingbing,这可是一个int类型的数据,所以我用int类型的数组存储这些图片数据
    int[] arr_pic = {R.drawable.fanbingbing,R.drawable.yangmi,R.drawable.zhangxinyi,R.drawable.aiweier,R.drawable.liushishi,R.drawable.piaoxinhui,R.drawable.yuner};
    //我们这有 范冰冰  杨幂 张歆艺 艾薇儿 刘诗诗 朴信惠 允儿
     
  • 实现获取数据的函数getData(),函数的返回值类型为List<Map<String,Object>>,实现代码如下:
    private List<Map<String,Object>> getData()
    {
        	int[] arr_pic = {R.drawable.fanbingbing,R.drawable.yangmi,R.drawable.zhangxinyi,R.drawable.aiweier,R.drawable.liushishi,R.drawable.piaoxinhui,R.drawable.yuner};
        	String[] arr_name = {"范冰冰","杨幂幂","张歆艺","艾薇儿","刘诗诗","朴信惠","允儿儿"};
        	String[] arr_profile = {
        			"1981年9月16日生于山东青岛,毕业于上海师范大学谢晋影视艺术学院,中国女演员。",
                    "中国女演员、歌手、电视剧制片人。出生于北京。毕业于北京电影学院表演系。",
        			"中国内地女演员,出生于1981年5月29日,2005年毕业于中央戏剧学院表演系本科班。",
        			"1984年9月27日出生于加拿大安大略省,加拿大女歌手、词曲创作者、演员。",
        			"原名刘诗施,中国内地影视女演员,出生于北京,毕业于北京舞蹈学院芭蕾舞专业。",
        			"2001年,11岁的朴信惠拍摄了李承焕的第一部MV《爱吗》",
        			"1990年5月30日出生于首尔,韩国女歌手、演员,女子演唱团体少女时代成员。"
        	};
        	for(int i = 0; i < 7; i ++)
        	{
        		Map<String,Object> map = new HashMap<String, Object>();
        		map.put("pic", arr_pic[i]);
        		map.put("name", arr_name[i]);
        		map.put("profile", arr_profile[i]);
        		dataList.add(map);
        	}
        	return dataList;
    }
     
  • 好了,整个的图文混排的listview展示完毕了,大家请欣赏

猜你喜欢

转载自chenyue1.iteye.com/blog/2217385