zoukankan      html  css  js  c++  java
  • Android_listView

    package com.example.app5;
    
    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.view.MenuItem;
    import android.view.View;
    import android.view.ViewTreeObserver.OnScrollChangedListener;
    import android.widget.AbsListView;
    import android.widget.AbsListView.OnScrollListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.Toast;
    /*
     * ListView:Android系统中显示列表的空间
     * 数据适配器:将复杂的数据(数组。链表,数据库,集合)填充在指定视图界面上
     * ArrayAdapter(数组适配器):用于绑定格式单一的数据
     * 数据源:可以是集合或数组
     * SimpleAdapter(简单适配器):用于绑定格式复杂的数据
     * 数据源:只能是特定泛型的集合
     * 
     * 数据适配器是连接数据源和视图界面的桥梁
     * 实现过程:新建适配器-》添加数据源到适配器-》视图加载适配器
     */
    /*
     * 监听器:
     * OnItemClickListener:可以处理视图中单个条目的点击事件
     * OnScrollListener:
     *     监测滚动的变化,可以用于视图在滚动中加载数据
     * 
     * 监听器是程序和用户交互的桥梁
     */
    public class ListView1 extends Activity implements OnItemClickListener,OnScrollListener{
        private ListView listView;
        private ArrayAdapter<String>arr_adapter;
        private SimpleAdapter sim_adapter;
        private List<Map<String,Object>> dataList;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_listview);
            listView = (ListView)findViewById(R.id.listView2);
            //1.新建一个数据适配器
            //ArrayAdapter(上下文,当前ListView加载的每一个列表项所对应的布局文件)
            /*
             * SimpleAdapter:
             * context:上下文
             * data:数据源(List<? extends Map<String,?>> data 一个Map组成的list集合 )
             *         每个Map对应ListView中的一行
             *         每个Map(键值对)中的键必须包含所有在from中所指定的键
             * resource:列表项的布局文件ID
             * from:Map 中的键名
             * to:绑定数据视图中的ID,与from成对应关系
             *         
             */
            
            //2.适配器加载数据源
            String[] arr_data = {"zhangsan","lisi","wangwu","zhaoliu","zhouqi"};
            arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data);
            
            dataList = new ArrayList<Map<String,Object>>();
            sim_adapter = new SimpleAdapter(this, getData() ,R.layout.item1,new String[]{"image","text"},new int[]{ R.id.image, R.id.text});
            
            //3.视图(listView)加载适配器
            // listView.setAdapter(arr_adapter);
            listView.setAdapter(sim_adapter);
            //设置监听器
            listView.setOnItemClickListener(this);
            listView.setOnScrollListener( this);
        }
            private List<Map<String,Object>> getData(){
                for(int i= 0;i<20;i++){                
                    Map<String,Object>map = new HashMap<String,Object>();
                    map.put("i", R.drawable.pic2);
                    map.put("text", "image"+(i+1));
                    dataList.add(map);
                }
                return dataList;
            }
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                // TODO Auto-generated method stub
                //scrollState    滚动状态
                switch(scrollState){
                case  SCROLL_STATE_FLING:
                    System.out.println("用户在手指离开屏幕前,用力滑动了屏幕,视图惯性继续滑动");
                    Map<String,Object> map = new HashMap<String,Object>();
                    map.put("image", R.drawable.pic2);
                    map.put("text", "添加项");
                    dataList.add(map);
                    sim_adapter.notifyDataSetChanged();
                    break;
                case SCROLL_STATE_IDLE:
                    System.out.println("视图已经停止滑动");
                    break;
                case SCROLL_STATE_TOUCH_SCROLL:
                    System.out.println("手指没有离开屏幕,视图正在滑动");
                    break;
                    
                }
            }
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub
                
            }
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                // TODO Auto-generated method stub
                String text = listView.getItemAtPosition(position)+"";
                Toast.makeText(this, position+"--"+text, Toast.LENGTH_SHORT).show();
                
            }
        
    }
  • 相关阅读:
    Redis笔记 —— string 篇
    解决跨域请求无法携带Cookie的问题
    Mysql事务学习笔记
    Redis笔记 —— hash 篇
    mysql视图的简单学习
    axios无法被识别为ajax请求的解决方案
    常见header信息详解
    int 15h
    操作系统有进程了
    是时候走我自己的路线了,真正的做我自己的Jinux
  • 原文地址:https://www.cnblogs.com/fangg/p/5583027.html
Copyright © 2011-2022 走看看