更新ListView的几种方法

来源:互联网 发布:windows pe镜像下载 编辑:程序博客网 时间:2024/06/01 09:44

1、直接用notifyDataSetChanged()的方法

2、用Message的sendEmptyMessage(0)方法

3、用Message的实例化传入callback

4、单例message

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.handleruse.MainActivity" >    <ListView        android:id="@+id/lv"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <ScrollView        android:layout_width="match_parent"        android:layout_height="wrap_content" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="vertical" >            <Button                android:id="@+id/btn1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="notifyDataSetChanged更新ListView" />            <Button                android:id="@+id/btn2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Message的空信息更新ListView" />            <Button                android:id="@+id/btn3"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Message的callback更新ListView" />            <Button                android:id="@+id/btn4"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Message的单例更新ListView" />        </LinearLayout>    </ScrollView></LinearLayout>
package com.example.updatelistview;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Handler.Callback;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;public class MainActivity extends Activity implements OnClickListener {private Button btn1, btn2,btn3,btn4;private ArrayAdapter<String> myAdapter;private List<String> stringList;private ListView lv;private Handler myHandler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);stringList = new ArrayList<String>();stringList.add("1");stringList.add("2");stringList.add("3");stringList.add("4");stringList.add("5");myAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, stringList);lv = (ListView) findViewById(R.id.lv);lv.setAdapter(myAdapter);btn1 = (Button) findViewById(R.id.btn1);btn2 = (Button) findViewById(R.id.btn2);btn3 = (Button) findViewById(R.id.btn3);btn4=(Button) findViewById(R.id.btn4);btn1.setOnClickListener(this);btn2.setOnClickListener(this);btn3.setOnClickListener(this);btn4.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn1:stringList.remove(0);myAdapter.notifyDataSetChanged();break;case R.id.btn2:stringList.remove(0);myHandler=new MyHandler();myHandler.sendEmptyMessage(0);break;case R.id.btn3:stringList.remove(0);myHandler=new Handler(callback);myHandler.sendEmptyMessage(0);break;case R.id.btn4:stringList.remove(0);//单例message,不会消耗内存String str="lhm";Message m=Message.obtain();m.obj=str;m.what=0;myHandler=new MyHandler();myHandler.sendMessage(m);break;default:break;}}public class MyHandler extends Handler {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 0:myAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, stringList);lv.setAdapter(myAdapter);break;default:break;}}}Callback callback=new Callback() {@Overridepublic boolean handleMessage(Message msg) {myAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, stringList);lv.setAdapter(myAdapter);return false;}};}



 

0 0
原创粉丝点击