2011-07-31 26 views
0

我对Android SDK非常新颖,但是我已经设法创建了一个Dashboard布局,现在我正在构建每个仪表板按钮后面的活动类/布局。我点击事件触发&启动相关的按钮活动等(每个按钮1个动作)。我也有一个标题栏在每个活动布局,允许导航回到主仪表板,设置等基本外观&的感觉。在此之前,所有人都工作得很好。我现在试图在活动布局上使用ListView来显示来自本地数据库(sqlite)的数据。ListView:设置SimpleCursorAdapter会覆盖当前的ContentView

在我的onCreate()方法中,我使用SimpleCursorAdapter尝试将游标(SQL结果)绑定到我的布局中的ListView。我实际上在这里使用2个布局,基于我之前做过的教程(记事本)。第二个布局适用于光标中的每个“行”。问题是,一旦我将SimpleCursorAdapter中的布局设置为第二个布局,我就失去了第一个布局中的标题栏功能。很明显,如果我尝试复制第二个布局中的标题栏代码,它将在游标中的每个实例中重复。

此外 - 我所有的“子”活动类都是从继承自Activity的基类(FunDashboardActivity)继承而来的。由于我的设计,我不能在这里使用ListActivity作为基类。再次 - 我对Android完全陌生,并且非常感谢任何反馈/帮助。先谢谢你。

这是我的活动代码:

public class FunSitesActivity extends FunDashboardActivity { 

    private int mSiteNumber = 1; 
    private FunDbAdapter mDbHelper; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.act_sites); 
     mDbHelper = new FunDbAdapter(this); 
     mDbHelper.open(); 
     fillData(); 
    } 

    private void fillData() { 

     // Get Site Data Stored 
     Cursor c = mDbHelper.fetchAllSites(); 
     startManagingCursor(c); 

     // Create Cursor Adapter 
     String[] from = new String[] { FunDbAdapter.KEY_SITE }; 
     int[] to = new int[] { R.id.text1 }; 
     SimpleCursorAdapter notes = 
      new SimpleCursorAdapter(this, R.layout.site_row, c, from, to); 

     // Create ListView & Set Cursor 
     ListView lv = new ListView(this); 
     lv.setAdapter(notes); 
     setContentView(lv); 
    } 

// act_site XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <LinearLayout style="@style/TitleBar"> 
     <ImageButton style="@style/TitleBarAction" 
      android:src="@drawable/title_home" 
      android:contentDescription="@string/description_about" 
      android:onClick="onClickHome" /> 
     <ImageView style="@style/TitleBarSeparator" /> 
     <TextView style="@style/TitleBarText" /> 
     <ImageButton style="@style/TitleBarAction" 
      android:contentDescription="@string/description_config" 
      android:src="@drawable/title_config" 
      android:onClick="onClickConfig" /> 
     <ImageButton style="@style/TitleBarAction" 
      android:contentDescription="@string/description_about" 
      android:src="@drawable/title_about" 
      android:onClick="onClickAbout" /> 
    </LinearLayout> 

    <ListView 
     android:id="@+id/sitelist" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
    <TextView 
     android:id="@+id/empty" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/no_sites"/> 
</LinearLayout> 

// site_row XML

<?xml version="1.0" encoding="utf-8"?> 
    <TextView android:id="@+id/text1" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

回答

0

我想我想通了。问题出在我的fillData方法中,我将contentView设置为新的ListView实例。见下面

private void fillData() { 

     // Get Site Data Stored 
     Cursor c = mDbHelper.fetchAllSites(); 
     startManagingCursor(c); 

     // Create Cursor Adapter 
     String[] from = new String[] { JAMDbAdapter.KEY_SITE }; 
     int[] to = new int[] { R.id.text1 }; 
     SimpleCursorAdapter notes = 
      new SimpleCursorAdapter(this, R.layout.site_row, c, from, to); 

     // Create ListView & Set Cursor 
     // NEW APPROACH 
     ListView lv = (ListView) findViewById(R.id.sitelist); 
     lv.setAdapter(notes); 

     // OLD APPROACH 
     //ListView lv = new ListView(this); 
     //lv.setAdapter(notes); 
     //setContentView(lv); 
    } 

新的代码,我不知道这是什么,我试图完成,因此任何“最好”的方法/所有的反馈将不胜感激。