• 安卓工程师入门——ListView


    1.适配器的作用

    把复杂的数据填充在指定的视图界面上。

    ArrayAdapter(数组适配器):绑定简单的数据。
    SimpleAdapter(简单适配器):绑定复杂的数据。(一些特定的泛型)

    适配器是数据源和视图界面的桥梁。

      建立过程:新建适配器——添加数据源到适配器——视图加载适配器。


    2.java源文件的编写

    package com.example.demo_shopping;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class MainActivity extends Activity {
    
    	
    	private ListView listview;                       //1.声明
    	private ArrayAdapter<String> arr_adapter;        //2.声明适配器
    	private SimpleAdapter sim_adapter;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		listview =(ListView) findViewById(R.id.listview1);  //3.数据与视图的绑定
    		String []arr_data = {"百度","谷歌","搜狐","火狐"};        //4.设置数据源
    		
    		//5.生成适配器    参数:上下文,列表对应的布局文件,数据源
    		arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, arr_data);
    		
    		//视图加载适配器
    		listview.setAdapter(arr_adapter);
    	}
    
    	@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;
    	}
    
    }

    3.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/listview1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
             >
    </ListView>
    
    </RelativeLayout>

    4.效果展示






    5.采用simpleadapter实现图文listview


    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="vertical" >
    
        <ImageView
            android:id="@+id/imageview1"
            android:layout_marginTop="200dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="145dp"
            android:src="@drawable/ic_launcher" />
    
        <TextView
            android:id="@+id/textview1"
            android:layout_marginLeft="145dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="demo"
            android:textColor="#000"
            android:textSize="20dp" />
    
    </LinearLayout>

    .java:
    package com.example.demo_shopping;
    
    import android.os.Bundle;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class MainActivity extends Activity {
    
    	
    	private ListView listview;                       //1.声明
    	private ArrayAdapter<String> arr_adapter;        //2.声明适配器
    	private SimpleAdapter sim_adapter;
    	private List<Map<String, Object>>datalist;       //5.数据源声明
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		datalist =new ArrayList<Map<String,Object>>();
    		getdata();
    		//3.绑定数据
    		listview =(ListView) findViewById(R.id.listview1);
    		//4.新建一个数据适配器
    		//参数介绍      (上下文,数据源:map组成的list的集合map的键必须包含from所指定的键,列表项的布局文件,from中的键,绑定数据视图的id)
    		sim_adapter = new SimpleAdapter(this, getdata(), R.layout.layout , new String[]{"imageview1","textview1"}, new int[]{R.id.imageview1,R.id.textview1});
    		
    	
    	
    	}
    
    	
    
    	private List<? extends Map<String, ?>> getdata() {
    		// TODO Auto-generated method stub
    		
    		for(int i= 0;i<20;i++){
    			Map<String, Object>map = new HashMap<String, Object>();
    			map.put("imageview1",R.drawable.ic_launcher);
    			map.put("textview1", "百度"+i);
    			datalist.add(map);
    		}
    		return datalist;
    	}
    
    
    
    	@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;
    	}
    
    }
    

    自定义的layout:
    <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/listview1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            
        </ListView>
    </RelativeLayout>




    本博客基于网络课程完成,旨在学习,有错误请指正!
  • 相关阅读:
    SQL group by的困惑
    【翻译】优化基于ExtJS 4.1的应用
    DAO模式图解
    Add new rows to WebCombo in clientside javascript
    JavaScript页面刷新与弹出窗口问题解决方法
    Web开发:"父窗口"与"弹出子窗口"之间的刷新, 传值(转载)
    用"window.showModalDialog()"实现DIV模式弹出窗口
    [转]Infragistics NetAdvantage UltraWebGrid使用技巧
    JavaScript 和 .NET 中的 JavaScript Object Notation (JSON) 简介
    json2.js 使用详细教程
  • 原文地址:https://www.cnblogs.com/comefuture/p/8305979.html
Copyright © 2020-2023  润新知