当前位置: 代码迷 >> Android >> 实现图文混排ListView显示 - Android版
  详细解决方案

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

热度:104   发布时间:2016-04-28 00:31:09.0
实现图文混排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展示完毕了,大家请欣赏

?

  相关解决方案