gpt4 book ai didi

java - 在基于 fragment 的主从流程中自定义 ListView?

转载 作者:行者123 更新时间:2023-11-30 03:38:11 24 4
gpt4 key购买 nike

我发现 ADT 为 Master/Detail Flow Activity 生成的模板相当迟钝,而且我不喜欢 ListView 未在布局文件中声明的事实,这迫使我以编程方式使用它。例如,我不是仅仅在布局文件中的 ListView 上设置 android:background,而是被迫在 fragment 的 onCreateView(...) 中通过 findViewById 找到 ListView > 方法,然后调用 setBackground(...)。为了可维护性和一般可读性,我想通过布局文件做同样的事情。

相反,我尝试在“master” fragment 的 onCreateView 方法中扩展自定义布局:

public class InboxFragment extends ListFragment {

public InboxFragment() {}

private ListView listView = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
listView = (ListView) inflater.inflate(R.layout.inbox_fragment_layout,
null);
return listView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// the following doesn't work
listView.setAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
DummyContent.ITEMS));
// nor does this
//setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
// android.R.layout.simple_list_item_activated_1,
// android.R.id.text1,
// DummyContent.ITEMS));
}

}

但是,调用 setListAdapter(甚至 setAdapter)似乎没有做任何事情,即使我已经为 ListView 指定了 android 的 id: R.layout.inbox_fragment_layout 中的 id="@id/android:list":

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#D3D3D3" />

我的“主” Activity 只调用 fragment 布局:

public class InboxActivity extends FragmentActivity {

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox_phone_layout);
}

}

inbox_phone_layout.xml:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentPhoneInbox"
android:name="com.justin.inbox.InboxFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />

相反,迎接我的是一个空白页面,而且看起来根本没有加载 ListView。我在这里做错了什么? Sample project on GitHub .

最佳答案

我通过将 inbox_phone_layout.xml 更改为以下内容解决了您的问题:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentPhoneInbox"
android:name="com.justin.inbox.InboxFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />

关于java - 在基于 fragment 的主从流程中自定义 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com