动态更新listview adapter
来源:互联网 发布:怎么样购买域名 编辑:程序博客网 时间:2024/04/29 03:25
比如listview有三个项,那我有没有机会,能动态改变的成4项呢? 我说,有机会。
那我们需要简单理解list adapter的关系,adapter是MVC中的M,用来管理数据,那应该我们有机会来添加 删除 插入等操作。
- package com.qisda;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.app.Application;
- import android.content.ComponentName;
- import android.database.DataSetObserver;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.ListAdapter;
- import android.widget.ListView;
- import com.qisda.R;
- public class Main extends Activity {
- public static final int ZERO=0;
- ComponentName name=this.getComponentName();
- public static final int WC=ViewGroup.LayoutParams.WRAP_CONTENT;
- ArrayAdapter<String> adapter=null;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Button btn=(Button)this.findViewById(R.id.btn);
- btn.setOnClickListener(btnlistener);
- /**
- * list content initialize
- */
- List<String> arrayList=new ArrayList<String>();
- arrayList.add("first");
- arrayList.add("second");
- arrayList.add("third");
- adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList);
- /**
- * display the list View and register the listener
- */
- ListView listview=(ListView)findViewById(R.id.listview);
- listview.setAdapter(adapter);
- listview.setOnItemClickListener(itemlistener);
- }
- AdapterView.OnItemClickListener itemlistener=new AdapterView.OnItemClickListener() {
- public void onItemClick(AdapterView<?> parent, View view, int position, long id){
- debug(position);
- }
- };
- View.OnClickListener btnlistener=new View.OnClickListener(){
- public void onClick(View view){
- if(view.getId()==R.id.btn)
- {
- adapter.insert("tmp",1);
- }
- }
- };
- public void debug(int position){
- Log.d("DEBUG","user click the item :"+position);
- }
- public void debug(Object obj){
- if(obj==null){
- debug(10);
- }
- Log.d("DEBUG","the obj name is :"+obj.toString());
- }
- }
从这个例子看出,我们可以直接对adapter操作。具体里面是如何作的,大家可以看看android代码,里面说的很清楚,也比较简单。
这里可能大家有几个问题,一个 listview如何知道adapter数据改变了,因为V只负责画,
二,我们是否有机会获取当数据改变时候告诉我们呢。
其实这两个问题,是一个问题。也就是 数据改变时候,如何发出通知。
我们可以这样作。
- DataSetObserver observer=new DataSetObserver(){
- public void onChanged() {
- debug("list adapter value changed !");
- }
- };
- adapter.registerDataSetObserver(observer);
当数据改变时候,会调用这个抽象类方法onChange() ,这样我们就有机会知道了。
listview 也是在里面注册了这么个东西,实现画面更新的。
- 动态更新listview adapter
- Android:ListView的Adapter的动态更新
- Android 自定义Adapter动态更新ListView视图
- ListView动态更新
- 【Android】动态更新ListView
- 【Android】动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- Listview动态更新数据
- notifyDataSetChanged() 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- notifyDataSetChanged() 动态更新ListView
- 计算机学科导论-2011级教学材料
- 七夕,你拿什么拯救你的爱人?
- Android系统移植 之 touch
- U8800 4.0升级指导书图片格式版,方便无法打开PDF的机友 [复制链接]
- cookies存取
- 动态更新listview adapter
- erlang编程基础-1
- FRM-92095: Oracle Jnitiator version too low – please install version 1.1.8.2 or highe
- Groovy元编程MOP(ExpandoMetaClass:EMC)的应用场景
- JAVA设计模式——适配器模式
- delphi 获取临时文件夹路径
- Base64 编码
- Java 中文编码
- Java Date 和 Calendar 实例