如何为ListView填充指定值并仅显示地址字段?
嘿,我来帮你搞定这个ListView的问题!咱们一步步来:
解决ListView过滤与仅显示Address字段的问题
一、先筛选符合条件的数据
首先你需要从获取到的完整数据里,把满足getHarakterByid(currCount).equals("Sale of monitors")的项挑出来。假设你已经从MySQL拿到了所有数据存在d_Task里,那可以这么做:
// 创建一个新的列表来存过滤后的数据 ArrayList<HashMap<String, Object>> filteredTasks = new ArrayList<>(); for (HashMap<String, Object> task : d_Task) { // 这里要注意:currCount应该是当前项的ID,从你的HashMap里取对应字段 // 比如你的it_id是"Position",那先拿到这个值作为参数传给getHarakterByid String itemId = task.get(it_id).toString(); String karakter = getHarakterByid(itemId); // 筛选符合条件的项 if ("Sale of monitors".equals(karakter)) { filteredTasks.add(task); } }
二、用SimpleAdapter仅显示Address字段
你之前用SimpleAdapter没成功,大概率是布局或者适配器参数没配对。咱们来重新设置:
1. 先创建一个仅显示Address的Item布局
在res/layout下新建list_item_address.xml,里面只放一个TextView:
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv_address" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:textSize="16sp"/>
2. 设置SimpleAdapter并绑定到ListView
回到MainActivity里,把之前的ArrayAdapter换成SimpleAdapter,只传入Address相关的映射:
// 用过滤后的filteredTasks来初始化适配器 SimpleAdapter addressAdapter = new SimpleAdapter( this, filteredTasks, R.layout.list_item_address, // 咱们刚创建的布局 new String[]{it_address}, // 只传入Address的key new int[]{R.id.tv_address} // 对应布局里的TextView ID ); // 绑定到ListView LISTVIEW.setAdapter(addressAdapter);
三、关于“填充指定值”的补充
其实上面的过滤步骤就是在给ListView填充符合你条件的指定值——只有满足Sale of monitors的项才会被加入到适配器的数据源里,最终显示在ListView上。
如果之后你需要调整显示内容,只需要修改布局文件和SimpleAdapter里的字段映射数组就行啦。
内容的提问来源于stack exchange,提问作者soltrix
相关产品推荐
相关产品推荐

