android-ListView空间的使用

一、深刻理解ListView

二、熟练使用两种适配器:ArrayAdapter、SimpleAdapter

   数据适配器作用:

    将复杂的数据填充在指定界面上(数组、集合、链表、数据库...),即连接数据源和视图界面的桥梁。

  (1)数组适配器:ArrayAdapter

    用于绑定格式单一的数据(数据源:数组、集合);

     (2)简单适配器:SimpleAadpter

    用于绑定格式复杂的数据(数据源:只能是特定泛型的集合);

 

    实现过程:新建适配器、添加数据源到适配器、视图加载适配器;

MainActivity文件:

package com.example.mylistview;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends ActionBarActivity {

private ListView listView;
 //private ArrayAdapter<String> arr_adapter;
 private SimpleAdapter simp_adapter;
 
 private List<Map<String,Object>> dataList;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
       
        listView=(ListView) findViewById(R.id.listView);
        /*
         * 数组适配器:
         * 0、生成一个数据源
         * 1、新建一个适配器并加载数据源
         *   数组适配器三个参数:
         *    上下文、当前ListView加载的列表项所对应的布局文件、数据源
         * 2、使用视图加载适配器
         *
         * */
       
        //String []arr_data={"马轩","选吗","马车","活吗","龙马","天马","赵称","赵晨","真唱","注册","向日葵","徐荣凯","谢荣康"};
        //arr_adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data);
        //listView.setAdapter(arr_adapter);
       
        /*
         * 简单适配器:
         *  参数:上下文
         *
         *   数据源List<? extends Map<String,?>>  一个map所组成的list集合,
         *    每一个map对应listView列表中的一行
         *    每一个Map中的键必须包含所有在from中所指定的键
         *   
         *   列表项的布局文件  
         *
         *   记录map中的键名
         *
         *   绑定数据视图中的id,与from对应
         * */
       
        dataList=new ArrayList<Map<String,Object>>();
        simp_adapter=new SimpleAdapter(this, this.getData(), R.layout.activity_menusimp, new String[]{"pic","text"}, new int[]{R.id.pic,R.id.text});
       
        listView.setAdapter(simp_adapter);
       
       
    }
   
    private List<Map<String,Object>> getData(){
     
     for (int i = 0; i < 20; i++) {
   
      Map<String,Object> map=new HashMap<String, Object>();
      map.put("pic", R.drawable.ic_logo);
      map.put("text", "谢荣康");
      dataList.add(map);
  }
     return dataList;
    }
}

activity_menu.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" >

<ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

 activity_menusimp.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="horizontal" >

<ImageView
        android:id="@+id/pic"
        android:layout_width="86dp"
        android:layout_height="100dp"
        android:layout_marginLeft="15dp"
        android:src="@drawable/ic_logo" />

<TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="demo"
        android:textColor="#000000"
        android:textSize="20sp" />
   
</LinearLayout>

 

 

 

 

三、熟练运用两种监听器:OnScrollListener、OnItemClickListener

时间: 2024-11-10 07:43:08

android-ListView空间的使用的相关文章

Android ListView下拉/上拉刷新:设计原理与实现

 <Android ListView下拉/上拉刷新:设计原理与实现> Android上ListView的第三方开源的下拉刷新框架很多,应用场景很多很普遍,几乎成为现在APP的通用设计典范,甚至谷歌官方都索性在Android SDK层面支持下拉刷新,我之前写了一篇文章<Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新>专门介绍过(链接地址:http://blog.csdn.net/zhangphil/article/details/4696537

Android ListView优化篇

在我的上一篇博客<Android ListView基础篇>中陈列了ListView和adapter的多种结合方式的基本使用,在本篇文章中将具体讲述如何通过多种方式处理好ListView的优化问题. 在上篇文章的例子中,我们使用了一张图片和一个文本作为每一行的数据,发现效果已经完全达到了,而且没出现什么问题.但如果我们将Item的数量调大,比如调到1000.10000.100000条数据,这个时候当你打开ListView的时候,肯定会不禁感慨"什么鬼,卡机了?!"等了好几秒钟

Android——ListView布局+适配器(三)

Android--ListView布局+适配器(三) package com.example.administrator.newstop; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import andro

Android——ListView多布局+适配器(二)

Android--ListView多布局+适配器(二) <span style="font-size:18px;">package com.example.administrator.newstop.entity; /** * Created by Administrator on 2016/8/4. */ public class News { private String title; private String pubDate; private int img; p

Android ListView复杂列表优化实践

原文:Android ListView复杂列表优化实践 很多社交App都不免会涉及到复杂的列表元素实现,一个列表上面可能大量的图片,不定长的评论列表,给手机端的程序员带来了不少的挑战.本文就是在实现复杂的列表滑动的情况下,利用已知的优化方法指导下的一次优化实践,旨在提升ListView的滑动流畅度,为用户带来良好的体验. 1:设计稿: 这是列表中可能出现的ItemView,有两种,但是又有许多相同的地方,比如一样有点赞的图片,评论等...其中,评论和点赞的数量是可变的. 2:使用一般布局带来的问

[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件

Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件. 1.为了防止拖动ListView时,在列表末尾重复数据显示.需要加入 HashMap<Integer,View> lmap = new HashMap<Integer,View>();其中Integer为列表位置,View为子项视图,加入数据前首先if (lmap.get(position)==null) ,满足条件时,加入lmap.put(position, convertView

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;

关于android:listview getChildAt 为空的解释

今天遇到了一个很奇怪的问题,我所设定的一个listview 有10个item,当我的 list.getCount 的数量对其进行for 循环的时候,当到第6个item的时候,得到的view对象却是null,这让我很费解,经过一番查询,明白了这个问题是怎么回事,与大家分享下: 如图片红框部分的listview部分.这其实涉及到android的listview控件的内存处理问题:当我们加载listview时,如果这个listview的数据量比较多,它是显示不完全的,但这时是否是所有的数据都已经加载?

android Listview分批加载+自动加载(附源码下载)

直接上代码,代码有注释: public class TestForListviewActivity extends Activity implements OnScrollListener { private ListView mListview = null; private View mFooterView; private PaginationAdapter mAdapter; private Handler handler=new Handler(); private boolean i

Android ListView常见属性问题

Question 1: listview在拖动的时候背景图片消失变成黑色背景.等到拖动完毕我们自己的背景图片才显示出来. 解决办法: xml中: android:scrollingCache="false"  或者 android:cacheColorHint="#00000000" 代码中: setScrollingCacheEnabled(false)  或者 setCacheColorHint(0)  或者setCacheColorHint(Color.TRA