我正在使用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的值?我是否需要编写处理多个数据的自定义适配器?
非常感谢任何帮助或指导。如果我可以传递任何其他代码段,请告诉我。谢谢!