我试图在android片段中显示用户时间轴。我的HomeFragment.java onCreate()看起来像这样:
public class HomeFragment extends ListFragment {
@InjectView(android.R.id.list) ListView mTimeline;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mSectionNumber = getArguments().getInt(ARG_SECTION_NUMBER);
}
final UserTimeline userTimeline = new UserTimeline.Builder().screenName("fabric").build();
final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter(getActivity(), userTimeline);
setListAdapter(adapter);
}
我的fragment_home.xml有这个listview:
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@android:id/list"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
HomeFragment是HomeActivity的一个片段。此代码只显示一个空列表。我该如何解决这个问题?我还想知道setListAdapter(adapter);
的工作原理。它如何知道将适配器设置到哪个列表,因为它无法在任何特定列表上调用。在编写此代码时,我使用此twitter fabric页面作为参考。
答案 0 :(得分:0)
通过覆盖ListFragment
在onCreateView
中对您的自定义布局fragment_home.xml进行充气。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home, container, false);
}
您的布局包含一个ListView
,其中包含特殊的@android:id/list
ID,用于标识ListView
ListFragment的setListAdapter将使用的内容。
此外,TweetTimelineListAdapter
只是ListAdapter
。
如果您想找到自己的ListView
并自行设置适配器,请使用普通Fragment
(而不是ListFragment
)。
mTimeline.setListAdapter(adapter) // mTimeline is a ListView
文档包含ListFragment example。