<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; } }
相关推荐
当一个列表项离开屏幕时,它的视图并不会立即销毁,而是被缓存起来,等待新的数据填充后再次显示。这种机制在处理大量数据时极大地减少了内存分配和回收,但同时也可能导致内容错乱的问题。 内容错乱通常出现在以下...
这个问题通常发生在使用`convertView`进行视图复用时,如果不正确处理,会导致视图显示不一致。本篇文章将深入探讨如何解决这一问题,以及如何在ListView中实现多布局。 首先,我们要理解ListView的工作原理。...
要使用`ExpandableListView`,开发者需要创建一个`ExpandableListAdapter`,这个适配器负责填充数据和视图。适配器通常包含两部分:父级列表的数据和子级列表的数据。在购物车场景中,父级列表可能代表不同的商品...
6. **避免内存泄漏**:在处理ListView时,一定要注意内存管理,确保在不再需要时解除对视图、适配器和其他资源的引用,防止内存泄漏。 通过这个"Android 解决ListView的复用问题 demo",开发者可以学习到如何在实际...
`ImageSwitcher`继承自`ViewSwitcher`,它内部包含了两个`ImageView`,当切换时会自动将当前显示的`ImageView`替换为另一个,并提供过渡动画。在图片播放器中,我们可以利用这个特性来实现图片的平滑过渡。 1. **...
3. Adapter:适配器是数据和视图之间的桥梁,将数据转化为ViewHolder并填充到视图中。 4. ViewHolder:ViewHolder是优化性能的关键,它缓存了视图的引用,避免了频繁查找视图操作,提高了性能。 三、使用...
当一个View被重用时,需要清除上一次的数据痕迹,避免出现数据错乱的情况。 - **数据分页**:如果数据量非常大,可以考虑使用数据分页技术,每次只加载一部分数据到ListView,当用户滚动到底部时再加载下一页。...
- **默认动画**:Android系统默认提供了简单的滑动动画,当新条目进入视口时会进行平滑的滑入效果。 - **自定义动画**:开发者可以通过重写`onLayout()`或使用第三方库来实现更复杂的动画效果,如淡入淡出、缩放、...
2. 接着,根据新的数据项填充convertView,确保每个视图只显示对应的数据。 其次,关于ID错乱的问题,通常是由于数据源管理不当或者ViewHolder的使用不规范导致的。为了解决这个问题: 1. 确保数据源(如ArrayList...
在Android开发中,Adapter和ListView是两个非常关键的组件,它们在构建用户界面,特别是处理数据展示时起着至关重要的作用。"SendObjAdapter"这个主题可能是关于如何自定义一个适配器,以便将对象数据有效地绑定到...
每个`ListView`需要有自己的适配器(Adapter),用于填充数据。 2. **数据结构设计**:定义一个数据结构,如`Category`类,包含一级分类名和对应的二级分类列表。然后,创建一个包含多个`Category`对象的列表,作为...
ListView通过Adapter来绑定数据,Adapter负责将数据转化为可显示的View,并管理这些View的复用,以提高性能。在嵌套ListView的情况下,我们不仅需要一个外部的ListView(父ListView),还需要为每个父ListView的项...
ListViewAnimation是Android开发中一种增强ListView显示效果的技术,它通过添加动态效果使用户界面更加生动,提高用户体验。在Android应用中,ListView是最常用的组件之一,用于展示大量的数据列表。ListView...
3. **Header和Footer**:ListView还允许添加头部和尾部视图,可以用来显示额外的信息或广告。 4. **自定义适配器**:通常,我们需要自定义Adapter来适应不同的数据结构和视图需求。这包括定义布局文件,创建...