0

如何使用构建器将数据注入我的对话框?

我想在 R.layout.history 上使用一个适配器(在课程的第 3 行设置为视图)。但看来我不能在 FireMissiles 类中做到这一点。

如何在该视图上使用适配器来填充数据?

public class FireMissilesDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        // Get the layout inflater
        LayoutInflater inflater = getActivity().getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.history, null));


        builder.setTitle("History");

        return builder.create();
    }
}
4

3 回答 3

0

如何在该视图上使用适配器来填充数据?

您可以使用 AlertDialog.Builder 类并调用setItems()setMultipleChoiceItems()传递数据数组并让对话框为您填充 ListView。

或者您可以像平常一样创建自己的 ListView(或 Spinner 等)并将此布局传递给任何 Dialog 的setContentView()方法。(您不一定需要使用 AlertDialog.Builder。)

于 2013-01-07T19:06:20.757 回答
0

我希望 layout.history 的类型是 ListView 或 AdapterView。您可以这样做:

ListView lview = (ListView)inflater.inflate(R.layout.history, null);

lview.setAdapter(适配器);// 将适配器作为 FireMissilesDialogFragment 的构造函数传递

于 2013-01-07T19:22:49.743 回答
0

而不是这一行:

builder.setView(inflater.inflate(R.layout.history, null));

它同时创建和设置视图,像这样拆分它们:

View v = infalter.inflate(R.layout.history, null));
// ... Some code here that sets up the view with your data.
builder.setView(v);

您希望 v 与 R.layout.history 的根布局具有相同的类型。v.findViewById()您可以像获得任何动态创建/引用的 ViewGroup 一样获得它的孩子。

于 2013-01-07T19:23:42.017 回答