【发布时间】:2011-08-28 01:22:13
【问题描述】:
我是 android 新手,我希望添加主题按钮仅显示一次,而不是在每个项目上显示。我如何使用 SimpleCursorAdapter 来做到这一点
问候 瓦内亚·伊克巴尔
代码如下(见showSubjectOnList()方法):
公共类 PopulatingSubject 扩展 ListActivity {
公共静态字符串主题名; 私有 SoftCopyDatabase 主题;
private static int[] subTO = { R.id.subject };
private static String[] subFROM = { SUBJECT };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
subjects = new SoftCopyDatabase(this);
}
@Override
public void onStart() {
super.onStart();
try {
showSubjectsOnList();
} catch (Exception e) {
e.printStackTrace();
}
}
public void onStop() {
super.onStop();
if (subjects.getReadableDatabase().isOpen()) {
subjects.close();
}
}
public void onDestroy(){
super.onDestroy();
if (subjects.getReadableDatabase().isOpen()) {
subjects.close();
}
}
private void showSubjectsOnList() {
String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME
+ " GROUP BY " + SUBJECT + ";";
Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.item_subject, cursor, subFROM, subTO);
setListAdapter(adapter);
startManagingCursor(cursor);
}
@Override
protected void onListItemClick(ListView listView, View view, int position,
long id) {
super.onListItemClick(listView, view, position, id);
subjectName=getSubjectName(Long.toString(id));
startActivity(new Intent(this, PopulatingLectures.class));
}
private String getSubjectName(String ID) {
Cursor cursor = subjects.getReadableDatabase().query(TABLE_NAME,
new String[] { SUBJECT }, "_ID=?", new String[] { ID }, null,
null, null);
cursor.moveToFirst();
int subjectIndex = cursor.getColumnIndex(SUBJECT);
String subjectName = cursor.getString(subjectIndex);
cursor.close();
return subjectName;
}
}
布局如下:
布局图为:
【问题讨论】:
-
你能举一个你想要完成的布局的例子吗?
-
其实我想要实现的是在listActivity中添加一个按钮,而不是在列表中。如果我在我的 Activity 中添加一个扩展 ListActivity 的按钮,则该按钮会显示在 List 的每个项目中,因为 SimpleCursorAdapter 正在使用 XML 的 ID 填充列表。
-
贴一些代码,一张图片,异常......
-
@pankaj 问题是我必须在我的 Activity 中添加一个扩展 ListActivity 的按钮。但是如果我添加按钮,按钮会显示在列表的每个项目中,但是我希望按钮只显示一次。为了避免这种情况,我尝试将 listView 放在单独的 LinearLayout 中,但是无法通过 SimpleCursorAdapter 填充 linearLayout(构造函数方法不支持 LinearLayouts,它支持 XML 布局)。现在如何添加按钮?
-
@Jack private void showSubjectsOnList() { String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME + " GROUP BY " + SUBJECT + ";";光标 cursor = subject.getReadableDatabase().rawQuery(sql, null); SimpleCursorAdapter 适配器 = new SimpleCursorAdapter(this, R.layout.item_subject, cursor, subFROM, subTO); setListAdapter(适配器);开始管理光标(光标); SimpleCursorAdapter 中使用的 R.layout.item 是一个 XML 布局,其中我有一个线性布局。在此 LinearLayout 上,我想填充 ListView,否则按钮将显示在所有项目中。怎么样?
标签: android listview simplecursoradapter