Использование ListViews в LinearLayouts вместо полноэкранного
Я новичок в Android и хочу, чтобы кнопка "Добавить тему" отображалась только один раз, а не на каждом элементе. Как я могу сделать это, используя SimpleCursorAdapter
С уважением Waneya Iqbal
Код выглядит следующим образом (см. Метод showSubjectOnList()):
открытый класс PopulationSubject extends ListActivity {
public static String subjectName; частные темы 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;
}
}
Макет выглядит следующим образом:
Картина макета выглядит так:
1 ответ
Вы должны самостоятельно создать макет либо в коде, либо в XML (рекомендуется XML). Затем создайте ListView в этом макете. Вы можете создать свою кнопку и добавить ее в тот же макет. Поскольку вы создаете свой макет, вы можете расположить ListView и Button любым удобным для вас способом.
Затем вы создаете ссылку на свой ListView, чтобы вы могли установить для него адаптер.
Пример:
Макет в файле XML с именем "my_layout.xml":
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sign In" />
<ListView
android:id="@+id/my_listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Тогда в коде:
public class MyActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
ListView listView = (ListView) findViewById(R.id.my_listview);
listView.setAdapter(/*Put your adapter reference here*/);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Handle list selections here
}
});
}
}
Очевидно, что нет никаких данных, но вы можете сделать это, но установите свой адаптер там, где я указал выше.