`

android 动态加载List

阅读更多

 

 

main.xml

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent" android:id="@+id/ll">

<ListView android:layout_height="wrap_content" android:id="@id/android:list"

android:layout_width="fill_parent"></ListView>

</LinearLayout>

 

DongTailist.xml

 

 

package cn.fn;

 

import android.app.Activity;

import android.os.Bundle;

 

import android.app.ListActivity;  

import android.os.Handler;  

import android.os.Message;  

import android.view.Gravity;  

import android.view.LayoutInflater;  

import android.view.View;  

import android.view.ViewGroup;  

import android.widget.AbsListView;  

import android.widget.BaseAdapter;  

import android.widget.ListView;  

import android.widget.TextView;  

 

public class DongTailist extends ListActivity {  

 

    private ListView listView;  

    private MyListViewAdapter adapter;  

 

    private int scrollState;  

 

    private View footerView;  

 

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

 

        listView = getListView();  

 

        footerView = LayoutInflater.from(this).inflate(R.layout.main, null);  

 

        listView.addFooterView(footerView); //在ListView底部添加正在加载视图    

        //注意:addFooterView方法需要在调用setListAdapter方法前调用!  

        adapter = new MyListViewAdapter(DongTailist.this);  

        setListAdapter(adapter);  

        getListView().setOnScrollListener(new AbsListView.OnScrollListener() {  

 

            @Override  

            public void onScrollStateChanged(AbsListView view, int scrollState) {  

                DongTailist.this.scrollState = scrollState;  

            }  

 

            @Override  

            public void onScroll(AbsListView view, int firstVisibleItem,  

                    int visibleItemCount, int totalItemCount) {  

                int lastVisibleItem = firstVisibleItem + visibleItemCount - 1; //可视的最后一个列表项的索引  

                /* 

                 * 当列表正处于滑动状态且滑动到列表底部时,执行 

                 * */  

                if(DongTailist.this.scrollState != AbsListView.OnScrollListener.SCROLL_STATE_IDLE  

                        && lastVisibleItem == totalItemCount - 1) {  

                    /* 

                     * 执行线程,睡眠5秒钟后添加10个列表项 

                     * */  

                    new Thread() {  

 

                        private Handler handler = new Handler() {  

 

                            @Override  

                            public void handleMessage(Message msg) {  

                                super.handleMessage(msg);  

                                adapter.count += 10;  

                                adapter.notifyDataSetChanged();  

                            }  

 

                        };  

 

                        @Override  

                        public void run() {  

                            super.run();  

                            try {  

                                sleep(5000);  

                                handler.sendEmptyMessage(0);  

                            } catch (InterruptedException e) {  

                                e.printStackTrace();  

                            }  

                        }  

 

                    }.start();  

 

                }  

            }  

        });  

    }  

}

 

 


MyListViewAdapter.xml

 

 

package cn.fn;

 

import android.content.Context;

import android.view.Gravity;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AbsListView;

import android.widget.BaseAdapter;

import android.widget.TextView;

 

public class MyListViewAdapter extends BaseAdapter {

int count = 20; // 初始列表项数量

private Context context;

 

public MyListViewAdapter(Context _context) {

context = _context;

}

 

@Override

public int getCount() {

return count;

}

 

@Override

public Object getItem(int position) {

return position;

}

 

@Override

public long getItemId(int position) {

return position;

}

 

@Override

public View getView(int position, View convertView, ViewGroup parent) {

TextView result = (TextView) convertView;

if (result == null) {

result = new TextView(context);

result.setTextAppearance(context,

android.R.style.TextAppearance_Large);

AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(

AbsListView.LayoutParams.FILL_PARENT,

AbsListView.LayoutParams.WRAP_CONTENT);

result.setLayoutParams(layoutParams);

result.setGravity(Gravity.CENTER);

}

result.setText("Item " + (position + 1));

return result;

}

 

}


分享到:
评论

相关推荐

    android中的spinner动态加载内容

    然而,动态加载内容意味着我们需要在运行时添加或更新Spinner的数据。这可以通过调用适配器的方法来完成,如`add()`、`insert()`、`clear()`和`notifyDataSetChanged()`。比如,我们可以从网络或者数据库获取数据,...

    android动态加载Radiobutton

    在Android开发中,动态加载RadioButton是一项常见的需求,尤其是在创建可扩展的用户界面或者根据数据动态生成选项时。本文将深入探讨如何通过代码实现这一功能。 首先,我们需要了解RadioButton的基本概念。...

    android listview 下拉刷新 动态加载数据 图文混排

    以上就是关于“Android ListView下拉刷新、动态加载数据及图文混排”的实现步骤。通过这个功能,用户可以在滚动到列表底部时加载更多内容,而下拉刷新则允许用户获取最新的数据,提高了用户体验。

    android ViewPager动态加载数据完整示例源码下载

    本文将详细介绍如何在Android中使用ViewPager进行动态加载数据,并提供一个完整的示例源码下载。 首先,我们需要理解ViewPager的基本概念。ViewPager是Android Support Library中的一个视图容器,它允许用户通过...

    Android String字符串数组动态增加

    5. **更新UI**: 如果这个数组是用来更新UI元素(如ListView或RecyclerView),你需要重新加载适配器的数据并调用notifyDataSetChanged()来刷新视图。 ```java adapter.notifyDataSetChanged(); // 假设adapter是你...

    android之animation-list实现的简单粘稠加载效果使用demo

    `animation-list`是Android系统提供的一种用于创建帧动画的视图组件,常用来实现如加载、旋转、弹跳等效果。本教程将深入探讨如何使用`animation-list`来创建一个简单的粘稠加载效果。 一、animation-list概述 `...

    Android 保存List数据(SharedPreferences)

    // 添加数据到dataList // 序列化 JSONArray jsonArray = new JSONArray(dataList); String jsonString = jsonArray.toString(); // 保存到SharedPreferences SharedPreferences preferences = ...

    Android-List分页加载

    在Android开发中,当应用程序需要显示大量的数据时,通常会采用分页加载的方式来优化用户体验。分页加载不仅可以减少一次性加载的数据量,降低内存消耗,还能提高应用的响应速度。本篇将深入探讨Android中实现List...

    Android使用addView动态添加组件

    3. 当需要添加新的列表项时,只需向适配器的数据源添加数据并调用 `notifyDataSetChanged()`: ```java adapter.add("新列表项"); adapter.notifyDataSetChanged(); ``` 三、动态添加 `LinearLayout` `...

    ListView中动态添加数据

    总结,动态添加数据到Android的ListView涉及以下几个关键步骤:创建数据模型,实现自定义Adapter,设置ListView和Adapter,向数据源添加新数据并通知Adapter,以及考虑性能优化措施。通过熟练掌握这些技巧,开发者...

    Android自定义list的item显示内容

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了满足不同场景下的需求,我们常常需要对ListView的item进行自定义,以显示更丰富的内容,比如添加图片、按钮等元素。本篇文章将深入探讨如何...

    Android list转json工具类

    当需要将Android应用中的数据列表发送到服务器或者从服务器获取数据时,通常需要将List对象转换为JSON字符串。本篇文章将深入探讨如何在Android中实现一个将集合List转化为JSON字符串的工具类,以及在联网调接口时...

    Android动态加载布局

    在Android开发中,动态加载布局是一种常见的优化技术,它允许开发者在程序运行时根据需要创建和添加布局元素,而不是在XML文件中预先定义所有的视图。这种技术在处理复杂、可变或者数据驱动的界面时尤其有用。在本文...

    android list下拉刷新

    在Android开发中,"android list下拉刷新...综上所述,"android list下拉刷新"涉及到组件使用、事件监听、数据加载、界面更新等多个技术点,开发者需要结合实际需求,灵活运用这些知识来打造高效、美观的下拉刷新体验。

    Android 快速滑动 list 仿QQ通讯录

    在Android开发中,快速...实际项目中,ContactList可能包含了实现这些功能的代码文件,如Adapter类、ViewHolder类、数据加载和处理逻辑等。开发者需要理解并熟练掌握这些知识点,才能构建出高效、流畅的通讯录界面。

    Android 动态添加表格,并排序

    在Android开发中,动态添加表格并实现排序是常见的需求,特别是在数据展示和分析的应用场景下。这个Demo展示了如何创建一个可滚动、可排序的表格,为用户提供了良好的交互体验。以下将详细介绍实现这一功能的关键...

    android三种自定义Loading加载框

    在Android开发中,为了提升用户体验,开发者经常需要创建各种自定义的Loading加载框来提示用户应用正在处理数据或执行操作。本教程将详细介绍三种不同的自定义加载框实现方法,帮助你的应用程序在等待过程中呈现更...

    android 解析txt转为list

    Android 6.0(API级别23)之后,需要动态请求读取外部存储的权限,记得在代码中添加相应的权限检查和请求。 通过以上步骤,你就可以成功地从TXT文件读取数据并将其转化为List,方便在Android应用中进一步使用。...

    Android 里的List拖动排序

    在Android开发中,List拖动排序...总的来说,Android中的List拖动排序是一个结合了触摸事件处理、数据管理、UI更新和动画设计的综合性任务。通过熟练掌握这些技术,开发者能够为用户提供更加直观和高效的操作界面。

Global site tag (gtag.js) - Google Analytics