Использование 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
        }
    });
    }
}

Очевидно, что нет никаких данных, но вы можете сделать это, но установите свой адаптер там, где я указал выше.

Другие вопросы по тегам