0 0

android适配器填充信息时错乱显示5

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

 在对listview添加适配器时,对应的信息没有显示到对应的textview当中,结果显示混乱?

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

public class AttendanceInfoActivityAdapter extends BaseAdapter {

	private LayoutInflater inflater;

	private List<AttendanceInfo> list_ai;
	private AttendanceInfo ai;

	private TextView tv_Name;
	private TextView tv_Dept;
	private TextView tv_Position;
	private TextView tv_Date;
	private TextView tv_AmAState;
	private TextView tv_AmLState;
	private TextView tv_PmAState;
	private TextView tv_PmLState;

	public AttendanceInfoActivityAdapter(Context context) {
		list_ai = AttendanceInfoService.list_ai;
		ai = new AttendanceInfo();
		inflater = LayoutInflater.from(context);
	}

	public void filterInfo(String filterCond, int i) {
		List<AttendanceInfo> temp_list = new ArrayList<AttendanceInfo>();
		if (!list_ai.isEmpty()) {
			switch (i) {
			case 0:
				for (AttendanceInfo ea : list_ai) {
					if (filterCond != null) {
						if (!ea.getPersonName().equals(filterCond)) {
							temp_list.add(ea);
						}
					}
				}
				break;
			case 1:
				for (AttendanceInfo ea : list_ai) {
					if (!filterCond.equals("部门")) {
						if (!ea.getPersonDepart().equals(filterCond)) {
							temp_list.add(ea);
						}
					}
				}
				break;
			case 2:
				for (AttendanceInfo ea : list_ai) {

					if (!ea.getAmArriveState().equals(filterCond)) {
						temp_list.add(ea);
					}

				}
				break;
			case 3:
				for (AttendanceInfo ea : list_ai) {

					if (!ea.getAmLeaveState().equals(filterCond)) {
						temp_list.add(ea);
					}

				}
				break;
			case 4:
				for (AttendanceInfo ea : list_ai) {

					if (!ea.getPmArriveState().equals(filterCond)) {
						temp_list.add(ea);
					}

				}
				break;
			case 5:
				for (AttendanceInfo ea : list_ai) {

					if (!ea.getPmLeaveState().equals(filterCond)) {
						temp_list.add(ea);
					}

				}
				break;
			case 6:
				for (AttendanceInfo ea : list_ai) {
					if (filterCond != null) {
						if (!ea.getAttendanceDate().equals(filterCond)) {
							temp_list.add(ea);
						}
					}
				}
				break;
			default:
				break;
			}
			list_ai.removeAll(temp_list);
		}
	}

	@Override
	public int getCount() {
		return list_ai.size();
	}

	@Override
	public Object getItem(int position) {
		return position;
	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public View getView(int position, View contentView, ViewGroup parent) {
		View view = inflater.inflate(R.layout.attendance_info_item, null);
		ai = list_ai.get(position);

		tv_Name = (TextView) view.findViewById(R.id.tv_Name);
		tv_Name.setText(ai.getPersonName());
		tv_Date = (TextView) view.findViewById(R.id.tv_Date);
		tv_Date.setText(ai.getAttendanceDate());
		tv_Dept = (TextView) view.findViewById(R.id.tv_Dept);
		tv_Dept.setText(ai.getPersonDepart());
		tv_Position = (TextView) view.findViewById(R.id.tv_Position);
		tv_Position.setText(ai.getPersonPosition());
		tv_AmAState = (TextView) view.findViewById(R.id.tv_AmAState);
		tv_AmAState.setText(ai.getAmArriveState());
		tv_AmLState = (TextView) view.findViewById(R.id.tv_AmLState);
		tv_AmLState.setText(ai.getAmLeaveState());
		tv_PmAState = (TextView) view.findViewById(R.id.tv_PmAState);
		tv_PmAState.setText(ai.getPmArriveState());
		tv_PmLState = (TextView) view.findViewById(R.id.tv_PmLState);
		tv_PmLState.setText(ai.getPmLeaveState());
		return view;
	}
}

 


问题补充:第一组数据显示正常,从第二组数据开始,适配器就出问题了!!
2014年4月13日 10:25
  • 大小: 107.5 KB
目前还没有答案

相关推荐

    ListVeiw适配器工具类+焦点抢占+convertView复用导致内容错乱

    当一个列表项离开屏幕时,它的视图并不会立即销毁,而是被缓存起来,等待新的数据填充后再次显示。这种机制在处理大量数据时极大地减少了内存分配和回收,但同时也可能导致内容错乱的问题。 内容错乱通常出现在以下...

    解决Android ListView滚动布局错位

    这个问题通常发生在使用`convertView`进行视图复用时,如果不正确处理,会导致视图显示不一致。本篇文章将深入探讨如何解决这一问题,以及如何在ListView中实现多布局。 首先,我们要理解ListView的工作原理。...

    Android-使用ExpandableListView实现的购物车

    要使用`ExpandableListView`,开发者需要创建一个`ExpandableListAdapter`,这个适配器负责填充数据和视图。适配器通常包含两部分:父级列表的数据和子级列表的数据。在购物车场景中,父级列表可能代表不同的商品...

    Android 解决ListView的复用问题 demo

    6. **避免内存泄漏**:在处理ListView时,一定要注意内存管理,确保在不再需要时解除对视图、适配器和其他资源的引用,防止内存泄漏。 通过这个"Android 解决ListView的复用问题 demo",开发者可以学习到如何在实际...

    Android基于Imageswitcher的图片播放器

    `ImageSwitcher`继承自`ViewSwitcher`,它内部包含了两个`ImageView`,当切换时会自动将当前显示的`ImageView`替换为另一个,并提供过渡动画。在图片播放器中,我们可以利用这个特性来实现图片的平滑过渡。 1. **...

    android-support-v7-recyclerview.jar.zip

    3. Adapter:适配器是数据和视图之间的桥梁,将数据转化为ViewHolder并填充到视图中。 4. ViewHolder:ViewHolder是优化性能的关键,它缓存了视图的引用,避免了频繁查找视图操作,提高了性能。 三、使用...

    蚂蚁乐园的代码仓库 之 安卓 Android (一)

    当一个View被重用时,需要清除上一次的数据痕迹,避免出现数据错乱的情况。 - **数据分页**:如果数据量非常大,可以考虑使用数据分页技术,每次只加载一部分数据到ListView,当用户滚动到底部时再加载下一页。...

    Android应用源码之listview 的各种动画效果.zip

    - **默认动画**:Android系统默认提供了简单的滑动动画,当新条目进入视口时会进行平滑的滑入效果。 - **自定义动画**:开发者可以通过重写`onLayout()`或使用第三方库来实现更复杂的动画效果,如淡入淡出、缩放、...

    listview数据重复解决办法

    2. 接着,根据新的数据项填充convertView,确保每个视图只显示对应的数据。 其次,关于ID错乱的问题,通常是由于数据源管理不当或者ViewHolder的使用不规范导致的。为了解决这个问题: 1. 确保数据源(如ArrayList...

    SendObAdapter

    在Android开发中,Adapter和ListView是两个非常关键的组件,它们在构建用户界面,特别是处理数据展示时起着至关重要的作用。"SendObjAdapter"这个主题可能是关于如何自定义一个适配器,以便将对象数据有效地绑定到...

    使用PopupWindow + 2个ListView实现仿 美团/淘宝/百度糯米 多级分类菜单效果

    每个`ListView`需要有自己的适配器(Adapter),用于填充数据。 2. **数据结构设计**:定义一个数据结构,如`Category`类,包含一级分类名和对应的二级分类列表。然后,创建一个包含多个`Category`对象的列表,作为...

    ListView嵌套ListView的demo

    ListView通过Adapter来绑定数据,Adapter负责将数据转化为可显示的View,并管理这些View的复用,以提高性能。在嵌套ListView的情况下,我们不仅需要一个外部的ListView(父ListView),还需要为每个父ListView的项...

    ListViewAnimation列表动画

    ListViewAnimation是Android开发中一种增强ListView显示效果的技术,它通过添加动态效果使用户界面更加生动,提高用户体验。在Android应用中,ListView是最常用的组件之一,用于展示大量的数据列表。ListView...

    listviewdemo

    3. **Header和Footer**:ListView还允许添加头部和尾部视图,可以用来显示额外的信息或广告。 4. **自定义适配器**:通常,我们需要自定义Adapter来适应不同的数据结构和视图需求。这包括定义布局文件,创建...

Global site tag (gtag.js) - Google Analytics