我对Android SDK很新,但我设法创建了一个Dashboard布局,现在我正在构建每个仪表板按钮后面的活动类/布局。我有点击事件触发&启动相关的按钮活动等(每个按钮1次)。我还在每个活动布局上都有一个标题栏,允许导航回主仪表板,设置等。基本外观&感觉。到目前为止,所有人都一直很努力。我现在正尝试在活动布局上使用ListView来显示来自本地db(sqlite)的数据。
在我的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 :(得分: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);
}
我不确定这是否是我想要完成的“最佳”方法,所以任何/所有反馈都会非常感激。