`

ListView动态更新item的例子

阅读更多
1.ListViewUpdate.java文件:
package com.example;

import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;

public class ListViewUpdate extends Activity implements OnClickListener {
	
	private ListView lvDynamic;
	private ViewAdapter viewAdapter;
	private ItemListener listener;
	private static String[] data = new String[] { "机器化身", "第九区", "火星任务",
			"人工智能", "钢铁侠", "铁臂阿童木 ", "未来战士", "星际传奇", };
	private int selectedIndex = -1;

	public int getSelectedIndex() {
		return selectedIndex;
	}
	
	public void setSelectedIndex(int index){
		this.selectedIndex = index;
	}
	
	
	private int getImageResourceId() {
		int[] resourceIds = new int[] { R.drawable.item1, R.drawable.item2,
				R.drawable.item3, R.drawable.item4, R.drawable.item5 };
		return resourceIds[new Random().nextInt(resourceIds.length)];
	}
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		lvDynamic = (ListView) findViewById(R.id.lvDynamic);
		Button btnAddText = (Button) findViewById(R.id.btnAddText);
		Button btnAddImage = (Button) findViewById(R.id.btnAddImage);
		Button btnRemove = (Button) findViewById(R.id.btnRemove);
		Button btnRemoveAll = (Button) findViewById(R.id.btnRemoveAll);
		btnAddText.setOnClickListener(this);
		btnAddImage.setOnClickListener(this);
		btnRemove.setOnClickListener(this);
		btnRemoveAll.setOnClickListener(this);
		listener = new ItemListener(this);
		viewAdapter = new ViewAdapter(this);
		lvDynamic.setAdapter(viewAdapter);
		lvDynamic.setOnItemSelectedListener(listener);
	}

	@Override
	public void onClick(View view) {
		// TODO Auto-generated method stub
		switch (view.getId()) {
		case R.id.btnAddText:
			int randomNum = new Random().nextInt(data.length);
			viewAdapter.addText(data[randomNum]);
			break;
		case R.id.btnAddImage:
			viewAdapter.addImage(getImageResourceId());
			break;
		case R.id.btnRemove:
			viewAdapter.remove(selectedIndex);
			selectedIndex = -1;
			break;
		case R.id.btnRemoveAll:
			viewAdapter.removeAll();
			break;

		}
	}
}


2. ViewAdapter.java适配器文件

package com.example;

import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ViewAdapter extends BaseAdapter {

	private Context context;
	private List textIdList = new ArrayList();

	public ViewAdapter(Context context) {
		this.context = context;
	}

	public int getCount() {
		return textIdList.size();
	}

	public Object getItem(int position) {
		return textIdList.get(position);
	}

	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return 0;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		System.out.println("position2222----------------------->"+position);
		String inflater = Context.LAYOUT_INFLATER_SERVICE;
		LayoutInflater layoutInflater = (LayoutInflater) context
				.getSystemService(inflater);
		LinearLayout linearLayout = null;
		if (textIdList.get(position) instanceof String) {
			linearLayout = (LinearLayout) layoutInflater.inflate(R.layout.text,
					null);
			TextView textView = ((TextView) linearLayout
					.findViewById(R.id.textview));
			textView.setText(String.valueOf(textIdList.get(position)));
		} else if (textIdList.get(position) instanceof Integer) {
			linearLayout = (LinearLayout) layoutInflater.inflate(
					R.layout.image, null);
			ImageView imageView = (ImageView) linearLayout
					.findViewById(R.id.imageview);
			imageView.setImageResource(Integer.parseInt(String
					.valueOf(textIdList.get(position))));
		}
		return linearLayout;
	}

	public void addText(String text) {
		textIdList.add(text);
		notifyDataSetChanged();
	}
	
	public void addImage(int resId) {
		textIdList.add(resId);
		notifyDataSetChanged();
	}
	
	public void remove(int index) {
		if (index < 0)
			return;
		textIdList.remove(index);
		notifyDataSetChanged();
	}
	
	public void removeAll() {
		textIdList.clear();
		notifyDataSetChanged();
	}

}

3. ItemListener.java监听器:

package com.example;

import android.content.Context;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;

public class ItemListener implements OnItemSelectedListener {

	private Context con;
	
	public ItemListener(Context con){
		this.con = con;
	}
	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
			long arg3) {
		// TODO Auto-generated method stub
		((ListViewUpdate)con).setSelectedIndex(position);
		
	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub
		
	}

}

4.最后是3个xml布局文件:
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">
	<LinearLayout android:orientation="horizontal"
		android:layout_width="fill_parent" android:layout_height="wrap_content">
		<Button android:id="@+id/btnAddText" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="添加文本" />
		<Button android:id="@+id/btnAddImage" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="添加图像" />
		<Button android:id="@+id/btnRemove" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="删除当前项" />
		<Button android:id="@+id/btnRemoveAll" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="清空" />
	</LinearLayout>
	<ListView android:id="@+id/lvDynamic" android:layout_width="fill_parent"
		android:layout_height="fill_parent" android:cacheColorHint="#00000000" />
</LinearLayout>

image.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="wrap_content">
	<ImageView android:id="@+id/imageview" android:layout_width="100dp"
		android:layout_height="100dp" android:padding="10dp"/>
</LinearLayout>

text.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="wrap_content">
	<TextView android:id="@+id/textview" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:padding="10dp"
		android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>



在附上几个图片文件,供测试使用:
分享到:
评论

相关推荐

    最简单的listview动态添加、删除带edittext的item例子

    在这个“最简单的listview动态添加、删除带edittext的item例子”中,我们主要探讨如何在ListView中使用EditText,并实现动态添加和删除功能。 首先,我们需要理解ListView的工作原理。ListView通过Adapter将数据与...

    listview中删除item的小例子

    这个小例子"listview中删除item的小例子"展示了如何实现用户交互,即当用户点击ListView中的某个条目(item)时,触发删除操作,并动态更新界面。下面将详细解释实现这一功能的关键知识点。 1. **ListView的基本...

    Android ListView动态查询更新代码

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。动态查询和更新ListView是...通过SearchListView这个例子,我们可以学习如何在ListView中实现高效的搜索和动态更新功能,提升应用的用户体验。

    treeview和listview结合使用的例子

    - **BindingSource**: 可以用来绑定数据源到`ListView`,实现动态更新。 ### 4. 示例:资源管理器式应用 在资源管理器式应用中,`TreeView`通常用于显示目录结构,`ListView`显示目录中的文件。以下步骤演示了如何...

    android listView复用导致item上面动画的错乱

    网上大部分都是写的item上面显示静态图片的例子,我这个是解决显示动态图片时复用导致的动画显示错乱问题。问题描述:假如一屏可以显示10个item项,如果第一个正在播放动画,此时往下滚动,当第一个item不可见时会...

    Android 为ListView每个Item上面的按钮添加事件

    在这个例子中,`item_layout.xml`是每个Item的布局文件,包含一个TextView(id为`text_view`)和一个Button(id为`button`)。在getView()方法中,我们首先检查convertView是否为空,如果为空则创建新的视图,然后...

    ListView项(Item)的三种布局使用例子

    ### ListView项(Item)的三种布局使用例子 在Android开发中,`ListView`是十分常见的UI组件之一,用于显示一系列的数据列表。为了使列表项(Item)具有更好的视觉效果及更丰富的展示内容,开发者通常会自定义不同的...

    ListView中动态添加数据

    本篇文章将深入探讨如何在ListView中动态添加数据,这在实际应用中是非常常见且重要的功能。 首先,理解ListView的基本结构至关重要。ListView主要由Adapter驱动,Adapter就像一个桥梁,连接数据源(例如ArrayList...

    listview的简单例子

    在这个例子中,我们可能有一个包含应用程序信息的数据集,如应用的名称和对应的Intent,Adapter会把这些数据绑定到ListView的各个Item上。 首先,我们需要创建一个布局文件来定义ListView的每个条目。这通常是一个...

    C# ListView使用例子ListView排列方式演示

    ListViewItem item = listView.Items.Add("项1"); item.SubItems.Add("子项1_1"); item.SubItems.Add("子项1_2"); ``` 3. **设置排列方式**:默认情况下,ListView按照项的添加顺序进行排列。要改变排列方式,...

    ListView上添加commbox、textbox等控件例子

    这通常通过为ListViewItem添加SubItems实现,但因为ComboBox和TextBox不是ListView的内置子项类型,所以需要使用OwnerDraw模式。在OwnerDraw模式下,我们可以自定义绘制ListView项,实现控件的嵌入。 1. **ComboBox...

    android修改listview列表的item中某个控件的值demo

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在这个特定的示例中,我们探讨的是如何在不调用Adapter的`notifyDataSetChanged()`方法的情况下,直接修改ListView列表项中某个具体控件(如...

    ListView开发实例 ListView示例 ListView案例 小例子 源码

    ListView由多个列表项(ListView Item)组成,每个列表项通常对应一个View对象。开发者可以通过自定义Adapter来控制ListView如何获取和显示数据。Adapter是ListView和数据源之间的桥梁,它可以是ArrayAdapter、...

    android中一个简单的LIstView用法例子

    它的核心功能是展示一个可滚动的项目列表,每个项目(item)通常由一个布局文件定义,这些布局文件在运行时被动态加载并复用,以优化性能。 要创建一个ListView,你需要做以下几步: 1. **定义数据源**:ListView...

    ListView的动态加载-很简单的Demo

    这篇博客文章可能已经不复存在,但根据标题,我们可以推断作者分享了一个简单的例子,展示了如何在ListView中实施滚动触发的动态加载功能。通常,这种功能会在用户滚动到ListView底部时,通过网络请求或本地数据源...

    listview优化图片缓存例子

    - 回收策略:当ListView中的item被回收时,LazyList会自动清理对应的内存缓存,释放资源。 四、LazyList的使用步骤 1. 引入库:在项目中添加LazyList的依赖。 2. 初始化:在应用启动时初始化缓存。 3. 使用适配器:...

    ListView列表Item样式

    描述中的“亲测,可正常运行”意味着这个例子已经被测试过,并且在实际运行环境中能够正确显示ListView的列表项。这通常包括点击事件的处理、滑动流畅性以及各种屏幕尺寸的适配。 为了改变ListView的列表项样式,你...

    那些复杂的列表总要弄个清楚——(一)ListView动态添加项

    5. 动态添加项:在需要的时候,可以调用Adapter的`add()`方法来添加新项,然后调用`notifyDataSetChanged()`通知ListView数据已更新: ```java adapter.add("New Item"); adapter.notifyDataSetChanged(); ``` 除了...

    关于ListView的Item的一些定制化需求的例子

    在这个例子中,我们将深入探讨如何满足ListView的Item的一些定制化需求。 首先,我们需要了解ListView的工作原理。ListView通过Adapter来绑定数据,Adapter是连接数据源与ListView的桥梁。在Android中,常见的...

Global site tag (gtag.js) - Google Analytics