Я создал одну базу данных с тремя таблицами и поместил эту базу данных в папку с активами. Теперь я хочу показать значение из одного столбца в виде списка с помощью флажков, а затем, по выбору пользователя, хочу вставить их в другую таблицу. ТАК, как я могу это сделать.
До сих пор я извлекал данные и отображал их в списке. Но как я могу установить флажки, а затем получить значение, которое я не знаю. Код, который я использовал, ниже
1. основная деятельность
package com.example;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
public class MainActivity extends ListActivity {
private Cursor employees;
private MyDatabase db;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
db = new MyDatabase(this);
employees = db.getEmployees(); // you would not typically call this on the main thread
ListAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
employees,
new String[] {"FullName"},
new int[] {android.R.id.text1});
getListView().setAdapter(adapter);
}
@Override
protected void onDestroy() {
super.onDestroy();
employees.close();
db.close();
}
}
2.Mydatabase.java
package com.example;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class MyDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "northwind";
private static final int DATABASE_VERSION = 2;
public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
//setForcedUpgradeVersion(2);
}
public Cursor getEmployees() {
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String [] sqlSelect = {"0 _id", "FullName"};
String sqlTables = "Employees";
qb.setTables(sqlTables);
Cursor c = qb.query(db, sqlSelect, null, null,
null, null, null);
c.moveToFirst();
return c;
}
}
Пожалуйста, предложите мне, как я могу это сделать .. Любая помощь должна быть оценена
1 ответ
С моей точки зрения, вы должны создать собственный адаптер для ListView
и вручную перебирать набор данных результатов, обновляя ArrayList<MyObject>
(который вы также должны создать).
Затем создайте некоторые функции в своем настраиваемом адаптере, чтобы получить «выбранные» элементы, или создайте некоторые функции, такие как public void setSelected(int position)
, который соответственно изменяет флажок, и private boolean isSelected(int position)
, который возвращает, установлен ли флажок или нет.
Прежде всего нам нужен класс объекта для хранения набора данных:
class MyObject {
//properties with setters and getters
boolean selected;
}
В действии:
private MyActivity extends Activity {
...
ArrayList<MyObject> data = new ArrayList<MyObject>();
...
//get dataset
for(int i=0; i<cursor.getCount(); i++) {
//create and set MyObject
data.add(MyObject);
}
...
CustomAdapter myAdapter = new CustomAdapter(..., data);
listView.setAdapter(myAdapter);
...
}
В классе CustomAdapter:
class CustomAdapter extends BaseAdapter {
ArrayList<MyObject> data;
//constructor, properties, getters, setters
//implement methods
public void setSelected(int position) {
data.get(position).setSelected(true); //boolean selected property defines whether the checkbox is selected or not
notifyDatasetChanged(); //update the UI
}
@Override
getView() {
CheckBox checkBox; //the check box of the list row
...
if(data.get(position).isSelected()) {
checkBox.setSelected(true);
} else {
checkBox.setSelected(false);
} //update the checkbox accordingly
}
}
Я очень кратко их записываю, чтобы дать вам обзор. Есть много кода, который нужно написать, но я дам вам "горячую часть".
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.