• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android——Listview不用notifydatasetchanged更新数据的方法,androidlistview更新

Android——Listview不用notifydatasetchanged更新数据的方法,androidlistview更新

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android——Listview不用notifydatasetchanged更新数据的方法,androidlistview更新等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android——Listview不用notifydatasetchanged更新数据的方法,androidlistview更新


一、介绍 
先来介绍一下listview更新数据的几种方法,目前我知道的方法有如下几种: 
1. 每次更新数据时都调用listview.setadapter(); 
2. 每次更新数据时都调用adapter.notifydatasetchanged(); 
3. 在自定义的adapter里添加更新函数update;

博客撰写人:It一zhai男 
转载请标明地址:http://blog.csdn.net/u013293125/article/details/52858396

这里,我们将会一个一个来介绍,顺便说一句,对ListView的工作原理和机制不明白的可以看看这篇文章:http://blog.csdn.net/guolin_blog/article/details/44996879(大神都是看原码的,在此献上我的膝盖)。 
1. 每次更新数据时都调用listview.setadapter(); 
这个方法是效率最低的,因为它不管你其它的数据需不需要刷新,它都会将所有的数据刷新一遍,也就是说将整个listview刷新一遍,估计会一点Android的人都不会用这种方法,但我们还是将其列出来,可以与其它方法进行对比。

1.1 先上截图: 

点击更新后:

1.2 activity_main.xml文件

<LinearLayout
    android:orientation="vertical"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.listviewupdate.MainActivity"
    tools:ignore="MergeRootFrame" xmlns:android="http://schemas.android.com/apk/res/android">
    <Button 
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="更新"/>
    <ListView 
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </ListView>
</LinearLayout>

1.3 item.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" >
    <TextView 
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView 
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</LinearLayout>

1.4 MainActivity.java文件:

package com.example.listviewupdate;

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

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends Activity {
    private ListView listview;
    private List<Map<String, Object>>list = new ArrayList<Map<String,Object>>();
    private MyAdapter adapter;
    private Button btn;
    Map<String, Object>map;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listview = (ListView) findViewById(R.id.listview);

        //初始化数据
        for (int i = 0; i < 8; i++) {
            map = new HashMap<String, Object>();
            map.put("Id", "100"+i);
            map.put("Name","Name_"+i);
            list.add(map);
        }
        adapter = new MyAdapter(this, list);
        listview.setAdapter(adapter);

        btn = (Button) findViewById(R.id.btn);
        //比如说,要更新listview里第三行的Name,但下面的做法是重新加载了一下adapter
        //也就是说它刷新了整个listview,不管其他的数据需不需要更新;
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                map = list.get(2);
                map.put("Name", "更新的名字");
                //这里MyAdapter的第一个参数不用this原因是因为这里是一个匿名内部类,
                //this指向的是onClick里
                adapter = new MyAdapter(MainActivity.this, list);
                listview.setAdapter(adapter);
            }
        });

    }
    //自定义adapter
    public class MyAdapter extends BaseAdapter{
        List<Map<String, Object>>list;
        LayoutInflater inflater;
        public MyAdapter(Context context,List<Map<String, Object>>list){
            this.list = list;
            inflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.size();
        }

        @Override
        public Object getItem(int positi



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android——Listview不用notifydatasetchanged更新数据的方法,androidlistview更新

相关文章

  • 2017-05-26ListView嵌套出现的问题,listview嵌套出现
  • 2017-05-26ScrollView中嵌套GridView,ListView只显示一行的解决办法,scrollviewgridview
  • 2017-05-227.6.2 基于TCP协议的Socket通信(1)
  • 2017-05-26location of the android sdk has not been setup in the preferences,androidpreferences
  • 2017-05-26实现图片拖动,图片拖动
  • 2017-05-26android 和Ubuntu 同步使用Xmind
  • 2017-05-222.4.1 ScrollView(滚动条)
  • 2017-05-26Android镜像文件ramdisk.img,system.img,userdata.img介绍,ramdisk镜像
  • 2017-05-26Android动画解析(一)—— Frame Animation(帧动画)
  • 2017-05-26android常用框架收录,android收录

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android--控件属性汇总
    • android内核剖析,android内核
    • 谈谈App的混合开发,App混合开发
    • Android多点触控技术,实现对图片的放大缩小平移,惯性滑动等功能
    • 购物车动画(Android),购物车动画android
    • [android] 手机卫士接收短信指令执行相应操作,android接收短信
    • Android中使用开源框架Fresco处理图片,
    • 在Windows下快速搭建React Native Android开发环境
    • 支付宝插件,支付宝
    • Android入门(九)文件存储与SharedPreferences存储,

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有