【发布时间】:2015-12-28 17:08:21
【问题描述】:
我有一个包含 2 个片段的主要活动。主要活动在操作栏中有一个SearchView。两个片段都有一个大量字符串列表,List<String>。
流程是:
用户输入 Fragment I --> 选择一个字符串(比如说 Selection1) --> 基于 Selection1 在第二个片段中填充一个字符串列表 -- > 这里用户选择了第二个字符串 ---> 基于这两个字符串进行处理。
现在由于两个片段都包含大量字符串,因此用户在SearchView 中输入查询,该查询过滤列表并将其缩减为显示在SearchableActivity 中的较小列表。
现在的问题是SearchableActivity 如何访问这两个List<String> 以根据查询过滤它们并向用户显示精简列表。
目前我所做的是覆盖onSearchRequested并将数据传递为
@Override
public boolean onSearchRequested()
{
Bundle appData = new Bundle();
appData.putString(FRAGMENT_ID, "Fragment_A");
appData.putStringArrayList(SEARCH_LIST, searchList);
startSearch(null, false, appData, false);
return true;
}
有没有更好的方法或标准的方法来处理这个问题,即允许数据从我的MainActivity 到SearchableActivity 的实现?
编辑:添加代码。显示如何在Fragment 中设置数据。 onDataReceived 从接收数据的HttpManager 中调用。
@Override
public void onDataReceived(String type,final Object object)
{
switch(type)
{
case PopItConstants.UPDATE_LIST:
getActivity().runOnUiThread(new Runnable() {
@Override
public void run()
{
updateCinemaList((List<String>) object);
}
});
break;
}
}
public void updateDataList(List<String> data)
{
this.dataList = data;
spinner.setVisibility(View.GONE);
mAdapter.updateList(dataList);
}
【问题讨论】:
-
希望这个链接stackoverflow.com/questions/7230893/…>可以帮助你
-
@Heyyou Data 基本上是
List<String>,它包含在片段 A 中。但 SearchableActivity 无权访问此列表。我不知道我需要在这里粘贴什么代码来进一步阐明这一点。 -
@Heyyou 当片段加载时我的
HttpManager从服务器下载列表并将其传递给片段(使用接口)。然后片段将此列表传递给适配器以显示。 -
@unrealsoul007 ,您是否将字符串传递给活动以进行搜索?
标签: android android-fragments android-activity searchview android-search