0

在不同布局上具有相同内容的多个 ListView

所以基本上我所拥有的是两个从 SQLite DB 获取内容的 ListView。我在下面创建了一个 BaseActivity 来扩展我的其他活动以访问相同的数据。我遇到的问题是我无法显示数据,因为它们是包含这些 ListView 的两种不同布局,一个在 Dialog 中,另一个在 TabWidget 中,它们都在单独的活动中。

所以基本上......

  1. 我需要知道如何在不同的活动中显示两个具有相同数据的 ListView(一个在对话框中,另一个在 TabWidget 中)
  2. 我目前得到的错误是来自 SimpleCursorAdapter 中的布局仅适用于 ListViews 之一,它不会添加另一个,因为它找不到 View
  3. 我不会在任何时候扩展 ListActivity

非常感谢您提前。我将随时编辑或澄清。

我的基本活动的一部分

public class BaseActivity extends Activity
{

    private SimpleCursorAdapter contactAdapter;
    public static final String ROW_ID = "row_id";
    private static ListView study_guide_list_view;

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

        String[] from = new String[] { "name" };
        int[] to = new int[] { R.id.study_guide_item_in_listview };
        contactAdapter = new SimpleCursorAdapter(BaseActivity.this, R.layout.study_guide_item_in_listview, null, from, to);

    }
}

这个部分是我将 ListView 添加到 TabWidget 的地方,它目前正在工作

study_guide_list_view = (ListView) findViewById(R.id.list);

contactAdapter = getSimpleCursorAdapter();
study_guide_list_view.setAdapter( contactAdapter );
study_guide_list_view.setOnItemClickListener(listview_item_listener);

我试图在自定义对话框中添加 ListView(不起作用:错误出现在 study_guide_dialog_list_view.setAdapter(contactAdapter); 上)

public OnClickListener save_slide_page_to_guide_btn_listener = new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        TabbedPagesActivity.getListViewAdapter();

        dialog = new Dialog(PDFViewerActivity.this);
        dialog.setContentView(R.layout.study_guide_custom_dialog_box);
        dialog.setTitle("Select a Study Guide");
        dialog.setCancelable(true);

        study_guide_dialog_list_view = (ListView) findViewById(R.id.list);

        contactAdapter = getSimpleCursorAdapter2();
        study_guide_dialog_list_view.setAdapter( contactAdapter );
        study_guide_dialog_list_view.setOnItemClickListener(listview_item_listener);

        Button dialog_ok_btn = (Button) dialog.findViewById(R.id.dialog_ok_btn);//it says cancel though
        dialog_ok_btn.setTextSize(20);
        dialog_ok_btn.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/AGENCYR.TTF"));
        dialog_ok_btn.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                dialog.dismiss();
            }
        });
        dialog.show();
    }
};
4

1 回答 1

0

哇,所以我终于想通了。问题出在自定义对话框中。而不是打电话...

study_guide_dialog_list_view = (ListView) findViewById(R.id.list);

它需要......

study_guide_dialog_list_view = (ListView) dialog.findViewById(R.id.list);

如果您不这样做,findViewById 将返回 null,因此会返回 NullPointerException

于 2012-07-12T20:13:07.367 回答