`
大头K
  • 浏览: 186877 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ArrayList动态删除 自定义Adapter (附源码)

阅读更多
ArrayList动态删除 自定义Adapter
上网收集了一些资料,都是从别人的代码中修改过来,一起分享。
1.先把所要的xml文件贴出来
a)listview.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listview_list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

b)base_adapter_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >
    
    <ImageView 
	    android:id="@+id/base_item.image"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_marginRight="20dp"
	    />
    <TextView 
	    android:id="@+id/base_item_text"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    />

</LinearLayout>

c)activity: DeleteListView.java
package com.fx;

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

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

import com.fx.adapter.ListAdapter;

/**
 * @author liucanwen
 * @since 2012-08-10
 * 联系qq 124597202
 */
public class DeleteListView extends Activity
{
	private ArrayList<String> conList = new ArrayList<String>();
	private ListView listView = null;
	private List<Map<String, String>> list = new ArrayList<Map<String, String>>();
	ListAdapter listAdapter;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.listview);

		initsView();// 调用初始化方法
		
		listView.setOnItemClickListener(new OnItemClickListener()
		{
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int position,
					long arg3)
			{
				Toast.makeText(DeleteListView.this, arg1.getId()+"", Toast.LENGTH_LONG)
						.show();
				
				listAdapter.removeItem(position);
			}
		});
	}

	// 初始化方法
	public void initsView()
	{
		conList.add("图片1");
		conList.add("图片2");
		conList.add("图片3");
		conList.add("图片4");
		conList.add("图片5");
		conList.add("图片6");
		
		listView = (ListView) findViewById(R.id.listview_list);// 初始化ListView组件

		// 通过BaseAdapter方法获取ListView组件内容
		 listAdapter = new ListAdapter(this,R.drawable.icon,conList);
		 listView.setAdapter(listAdapter);
	}
}

d)自定义适配器:ListAdapter.java
package com.fx.adapter;

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

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.TextView;

import com.fx.R;

/**
 * 自定义适配器
 * @author liucanwen
 * @since 2012-08-10
 * 联系qq 124597202
 */
public class ListAdapter extends BaseAdapter
{
	private Context context;
	int a;
	ArrayList<String> list;
	LayoutInflater lay;

	private Map<Integer, View> map = new HashMap<Integer, View>();

	public ListAdapter(Context context, int a, ArrayList<String> list)
	{
		this.context = context;
		this.a = a;
		this.list = list;
		lay = LayoutInflater.from(this.context);
	}

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

	@Override
	public Object getItem(int position)
	{
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public long getItemId(int position)
	{
		// TODO Auto-generated method stub
		return position;
	}
	
	//删除
	public void removeItem(int id)
	{
		list.remove(id);
		notifyDataSetInvalidated();
		notifyDataSetChanged();
	}
	

	@Override
	public View getView(int position, View convertView, ViewGroup parent)
	{
		// TODO Auto-generated method stub
		convertView = map.get(position);
		ViewHolder viewHolder;
		if (convertView == null)
		{
			convertView = lay.inflate(R.layout.base_adapter_item, null);
			viewHolder = new ViewHolder();
			viewHolder.textView = (TextView) convertView
					.findViewById(R.id.base_item_text);
			viewHolder.imageView = (ImageView) convertView
					.findViewById(R.id.base_item_image);

			map.put(position, convertView);
			convertView.setTag(viewHolder);
			convertView.setId(position + 21);
		} else
		{
			viewHolder = (ViewHolder) convertView.getTag();
		}
		viewHolder.imageView.setImageResource(a);
		viewHolder.textView.setText(list.get(position));

		return convertView;
	}

	public class ViewHolder
	{
		TextView textView;
		ImageView imageView;

	}

}
分享到:
评论

相关推荐

    Android自定义adapter的listview

    为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...

    安卓Android源码——动态列表布局.zip

    3. 自定义Adapter:讲解如何创建自定义的Adapter来绑定数据和视图。 4. 数据绑定:如何将数据模型与列表项视图关联起来。 5. 动态加载和滚动优化:讨论如何处理数据的动态加载,以及优化滚动性能的方法。 最后,...

    Android应用源码之AdapterDemo.zip

    3. **自定义Adapter的步骤**: - 创建一个新的Adapter类,继承自适当的Adapter基类。 - 实现`getView()`方法,该方法负责根据数据创建视图。通常,你会在这里使用convertView参数来优化性能,通过复用不再使用的...

    Android Spinner图文混排源码.zip

    在Java代码中,创建自定义Adapter类,注入数据源(通常是ArrayList,其中Object包含图片资源ID和文字信息)。然后,在Spinner的初始化中设置这个自定义Adapter。 6. **数据绑定** 在`getView()`方法内,使用...

    使用ListView控件实现漂亮的自定义表格效果实例源码

    Adapter就像一个桥梁,连接数据源(如ArrayList)和ListView的每一个列表项。在本实例中,我们可能会看到一个自定义的Adapter类,例如`MyCustomAdapter`,这个类继承自`BaseAdapter`,并重写了`getCount()`、`...

    Android应用源码之带有拼音首字母排序的listview.zip

    在Android中,常见的Adapter有ArrayAdapter、SimpleAdapter等,开发者可以根据需求自定义Adapter。 在本实例中,我们可能使用了自定义Adapter,该Adapter不仅需要包含数据,还需要包含一个根据拼音首字母排序的逻辑...

    android自定义列表

    创建自定义Adapter需要继承BaseAdapter或ArrayAdapter,并重写其中的方法。主要涉及以下四个方法: - `getCount()`: 返回列表项的数量。 - `getItem(int position)`: 根据位置获取列表项的数据对象。 - `...

    Android 基于自定义适配器的ExpandableListView源码.rar

    这可以是ArrayList或其他集合类型,关键是要能够方便地添加、删除和获取数据。 4. **视图复用**:为了提高性能,通常会使用convertView参数来复用已创建的视图。如果convertView不为空,我们需要检查它是否适合当前...

    Android ArrayList关键字查询.rar

    首先,ArrayList是一个动态数组,它允许存储一组有序的元素。在Android中,我们通常用它来存储自定义对象,如用户信息、商品详情等。为了实现关键字查询,我们需要对ArrayList中的每个对象进行遍历,检查其属性(如...

    自定义ListView

    10. **自定义Adapter的其他扩展**:例如,使用CursorAdapter绑定SQLite数据库,或者使用ArrayAdapter绑定数组或ArrayList。 在源码层面,ListView的滚动机制、视图复用以及与Adapter的交互是其核心部分。了解这些...

    Android应用源码之自定义本地相册的功能,可以多选图片用.zip

    1. 自定义Adapter:处理图片显示和选中状态。 2. Activity或Fragment:承载相册界面,处理用户交互和回调。 3. 数据结构:用于存储选中图片的Uri列表。 4. 权限请求:由于访问媒体库需要读取存储权限,因此可能包含...

    万能Adapter

    首先,Adapter是Android系统提供的一种接口,它的主要职责是将数据源(如ArrayList)中的数据转换为可以在View中显示的格式。在实际开发中,我们常常会遇到需要展示不同类型数据的情况,例如在一个列表中既有图片又...

    Android自定义标签选择器TagView

    在Android开发中,自定义视图是提升用户体验和界面独特性的重要手段。本文将深入探讨如何创建一个自定义标签选择器TagView,该组件通常用于显示可选或已选择的标签,常见于分类筛选或者设置界面。我们将分析其源码,...

    Android Spinner图文混排源码.rar

    "Android Spinner图文混排源码"文件应该是示例项目的源代码,包括自定义Adapter的实现、数据结构的设计以及Spinner的配置等。通过查看这些源码,开发者可以学习如何在实际项目中实现相似的功能。 总之,这个压缩包...

    android 自定义单选、多选对话框及popwindow窗口实例源码.zip

    本文将详细解析如何在Android应用中实现自定义单选、多选对话框以及PopWindow窗口,并通过实例源码进行深入探讨。 一、自定义单选对话框(RadioGroup) 在Android中,单选对话框通常使用`AlertDialog`配合`...

    Android九宫格源码

    3. 自定义Adapter:编写自定义Adapter,实现数据与视图的映射。在getView()方法中,根据数据生成单元格视图并添加动画。 4. 事件处理:在Adapter或GridView上设置OnClickListener或OnItemClickListener,监听用户对...

    Android应用源码动态列表布局.rar

    在这个例子中,源码可能会包含自定义Adapter的实现。 2. **ViewHolder模式**:为了提高ListView的滚动性能,通常会使用ViewHolder设计模式。ViewHolder是一个简单的类,持有列表项视图中各个组件的引用。这样,在`...

    spinner 下拉菜单源码

    1. 自定义Adapter:为了改变Spinner的显示样式,可以自定义Adapter,比如重写getView方法,为每个项目设置不同的背景色、字体等。 2. 自定义布局:可以通过设置 Spinner的android:popupBackground属性来自定义下拉...

Global site tag (gtag.js) - Google Analytics