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

时间:2012-07-12 19:22:25

标签: android sqlite listview layout android-activity

在不同版面上具有相同内容的多个ListView

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

所以基本上......

  1. 我需要知道如何使用不同活动中的相同数据显示两个ListView(一个在dialogBox中,另一个在TabWidget中)
  2. 我目前得到的错误来自于SimpleCursorAdapter中的布局,仅适用于其中一个ListView,并且它不会添加另一个,因为它无法找到View
  3. 我不会在任何时候扩展ListActivity
  4. 非常感谢您提前。我将袖手旁观编辑或澄清。

    我的基本活动的一部分

    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();
        }
    };
    

1 个答案:

答案 0 :(得分: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