如何实现筛选:点击BlankFormList Activity表单时仅在InsctanceChooserList Activity显示对应条目
实现表单条目筛选功能的步骤
1. 在BlankFormList Activity中传递表单标识
当用户点击列表里的某一表单时,先获取该表单的唯一标识(比如表单ID、表单名称),再通过Intent把这个标识传递给InstanceChooserList Activity:
// BlankFormList中的列表点击事件处理 listView.setOnItemClickListener((parent, view, position, id) -> { Form selectedForm = formList.get(position); Intent intent = new Intent(BlankFormList.this, InstanceChooserList.class); // 传递表单唯一标识,这里以表单ID为例 intent.putExtra("SELECTED_FORM_ID", selectedForm.getId()); startActivity(intent); });
2. 在InstanceChooserList Activity中接收参数并筛选数据
Activity启动后,先拿到Intent里的表单标识,再对原有实例数据列表进行筛选,只保留对应表单的条目:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_instance_chooser_list); // 获取传递过来的表单ID String selectedFormId = getIntent().getStringExtra("SELECTED_FORM_ID"); // 假设原有实例数据列表为instanceList List<Instance> filteredList = new ArrayList<>(); for (Instance instance : instanceList) { if (selectedFormId.equals(instance.getFormId())) { filteredList.add(instance); } } // 把筛选后的列表设置给适配器,更新UI展示 InstanceAdapter adapter = new InstanceAdapter(this, filteredList); listView.setAdapter(adapter); }
3. 可选优化方案
- 如果数据量较大,建议直接在数据源层面(比如数据库查询)筛选,减少内存遍历开销:
// SQLite查询示例:直接添加表单ID筛选条件 Cursor cursor = db.query("instance_table", null, "form_id = ?", new String[]{selectedFormId}, null, null, null); - 用Java 8 Stream简化内存筛选代码:
List<Instance> filteredList = instanceList.stream() .filter(instance -> selectedFormId.equals(instance.getFormId())) .collect(Collectors.toList());
内容的提问来源于stack exchange,提问作者Nikhil Patil
相关产品推荐
相关产品推荐

