我正在使用 ListFragment 来显示从 REST 调用返回的搜索结果。ListFragment 仅显示一条数据(名称),但我希望它为列表中的每个项目显示多条 - 地址、电话号码、评级。我已经在 SO 和谷歌上搜索了一堆,并没有真正找到任何关于如何实现这一点的指导。我希望有人能指出我正确的方向。
这是显示 ListFragment 的活动:
public class ResultsActivity extends FragmentActivity implements ListFragmentClickable.OnItemSelectedListener{
private ArrayAdapter<String> mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results);
setupActionBar();
Intent intent = getIntent();
String searchTerm = intent.getStringExtra(MainActivity.SEARCH_TERM);
mAdapter = new ArrayAdapter<String>(this, R.layout.item_label_list);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ListFragmentClickable list = new ListFragmentClickable();
ft.add(R.id.fragment_content, list);
list.setListAdapter(mAdapter);
FactualResponderFragment responder = (FactualResponderFragment) fm.findFragmentByTag("RESTResponder");
if (responder == null) {
responder = new FactualResponderFragment();
ft.add(responder, "RESTResponder");
}
Bundle bundle = new Bundle();
bundle.putString("search_term", searchTerm);
responder.setArguments(bundle);
ft.commit();
}
public ArrayAdapter<String> getArrayAdapter() {
return mAdapter;
}
还有一些其他方法,但它们并不相关。这是 FactualResponderFragment 中的方法,其中项目实际添加到 ArrayAdapter:
private void setResults() {
ResultsActivity activity = (ResultsActivity) getActivity();
searchThis = getArguments().getString("search_term");
if (mResults == null && activity != null) {
Intent intent = new Intent(activity, RESTService.class);
intent.setData(Uri.parse("http://search.twitter.com/search.json"));
Bundle params = new Bundle();
params.putString("q", searchThis);
intent.putExtra(RESTService.EXTRA_PARAMS, params);
intent.putExtra(RESTService.EXTRA_RESULT_RECEIVER, getResultReceiver());
activity.startService(intent);
} else if (activity != null) {
ArrayAdapter<String> adapter = activity.getArrayAdapter();
adapter.clear();
for (String result : mResults) {
adapter.add(result);
}
}
}
由于 ResultsActivity 几乎完全由 Java 构建,因此 XML 很短:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
这里是item_label_list.xml,在Java中也有引用:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="20dp" />
我是否可以只修改 item_label_list 的 XML 以为我想为每个列表项显示的每条数据添加下一个 TextView,然后在 XML 中创建每个列表条目的视图?如果是这种情况,我该如何设置每个 TextView 的值?我是否需要编写一个处理多条数据的自定义适配器?
非常感谢任何帮助或指导。如果我可以传递任何其他代码片段,请告诉我。谢谢!