Android 从数据库列加载不同的值
如何从同名列(如照片)中获取不同的值 在照片中,“测试”有3个不同的值,如何将它们加载到列表视图或微调器中 我有这个代码,可以工作,但没有得到3个值,只有第一个值: main活动Android 从数据库列加载不同的值,android,database,sqlite,Android,Database,Sqlite,如何从同名列(如照片)中获取不同的值 在照片中,“测试”有3个不同的值,如何将它们加载到列表视图或微调器中 我有这个代码,可以工作,但没有得到3个值,只有第一个值: main活动 public void lookupProduct (View view) { DatabaseHandler dbHandler = new DatabaseHandler(getApplicationContext()); Name name = dbHandler.findProduct(spi
public void lookupProduct (View view) {
DatabaseHandler dbHandler = new DatabaseHandler(getApplicationContext());
Name name = dbHandler.findProduct(spinner.getSelectedItem().toString());
Toast.makeText(this, spinner.getSelectedItem().toString(), Toast.LENGTH_LONG).show();
Intent j = new Intent(view.getContext(), SubActivity.class);
Bundle dados = new Bundle();
if (name != null) {
inputLabel.setText(String.valueOf(name.getName()));
values.setText(String.valueOf(name.getValue()));
// Passar para SubActivity
dados.putString("name", String.valueOf(name.getName()));
dados.putString("value", String.valueOf(name.getValue()));
} else {
inputLabel.setText("No Match Found");
dados.putString("name","No Match Found" );
dados.putString("value", "No Match Found");
}
j.putExtras(dados);
startActivity(j);
}
数据库助手
public Name findProduct(String name) {
String query = "Select * FROM " + TABLE_LABELS + " WHERE " + KEY_NAME + " = \"" + name + "\"";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
Name names = new Name();
if (cursor.moveToFirst()) {
cursor.moveToFirst();
names.setID(Integer.parseInt(cursor.getString(0)));
names.setName(cursor.getString(1));
names.setValue(cursor.getString(2));
cursor.close();
} else {
names = null;
}
db.close();
return names;
}
NameClass
public class Name {
private int _id;
private String _name;
private String _value;
public Name() {
}
public Name(int id, String name, String value) {
this._id = id;
this._name = name;
this._value = value;
}
public Name(String name, String value) {
this._name = name;
this._value = value;
}public String getName() {
return this._name;
}
public String getValue() {
return this._value;
}
试试这个
Name names = new Name();
ArrayList<Name > listaName= new ArrayList<>();//create an arraylist of your
custom objects
if (cursor.moveToFirst()) {
do {
names.setID(Integer.parseInt(cursor.getString(0)));
names.setName(cursor.getString(1));
names.setValue(cursor.getString(2));
listaName.add(names);//add your object to arraylist(you were overriding the object.)
} while (cursor.moveToNext());
cursor.close();
//AND ALSO CLOSE DB:
db.close
}
要读取所有光标,必须使用do while方法
如果您有任何问题,可以再问我一次试试这个
Name names = new Name();
ArrayList<Name > listaName= new ArrayList<>();//create an arraylist of your
custom objects
if (cursor.moveToFirst()) {
do {
names.setID(Integer.parseInt(cursor.getString(0)));
names.setName(cursor.getString(1));
names.setValue(cursor.getString(2));
listaName.add(names);//add your object to arraylist(you were overriding the object.)
} while (cursor.moveToNext());
cursor.close();
//AND ALSO CLOSE DB:
db.close
}
要读取所有光标,必须使用do while方法
如果您有任何问题,可以再次询问我尽管尚未测试,但您可以尝试以下方法:
// fetch data from DB
public ArrayList<Name> findProduct(String name) {
String query = "Select * FROM " + TABLE_LABELS + " WHERE " + KEY_NAME + " = \"" + name + "\"";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
ArrayList<Name> listOfNames= new ArrayList<>();
if (cursor.moveToFirst()) {
do {
listOfNames.add(new Name(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2)));
} while (cursor.moveToNext());
cursor.close();
db.close
return listOfNames;
}
// add data on spinner
public void addItemsOnSpinner() {
Spinner mSpinner = (Spinner) findViewById(R.id.mSpinner);
ArrayList<String> list = new ArrayList<String>();
for(Name name: findProduct("test")){
list.add(name.getValue());
}
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(dataAdapter);
}
//从数据库获取数据
公共ArrayList findProduct(字符串名称){
String query=“Select*FROM”+表\标签+”,其中“+键\名称+”=\”“+名称+”\”;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(查询,空);
ArrayList listOfNames=新的ArrayList();
if(cursor.moveToFirst()){
做{
添加(新名称(Integer.parseInt(cursor.getString(0))、cursor.getString(1)、cursor.getString(2)));
}while(cursor.moveToNext());
cursor.close();
db.close
返回名称列表;
}
//在微调器上添加数据
public void addItemsOnSpinner(){
微调器mSpinner=(微调器)findViewById(R.id.mSpinner);
ArrayList=新建ArrayList();
用于(名称:findProduct(“测试”)){
list.add(name.getValue());
}
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,列表);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
mSpinner.setAdapter(dataAdapter);
}
虽然尚未测试,但您可以尝试以下方法:
// fetch data from DB
public ArrayList<Name> findProduct(String name) {
String query = "Select * FROM " + TABLE_LABELS + " WHERE " + KEY_NAME + " = \"" + name + "\"";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
ArrayList<Name> listOfNames= new ArrayList<>();
if (cursor.moveToFirst()) {
do {
listOfNames.add(new Name(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2)));
} while (cursor.moveToNext());
cursor.close();
db.close
return listOfNames;
}
// add data on spinner
public void addItemsOnSpinner() {
Spinner mSpinner = (Spinner) findViewById(R.id.mSpinner);
ArrayList<String> list = new ArrayList<String>();
for(Name name: findProduct("test")){
list.add(name.getValue());
}
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(dataAdapter);
}
//从数据库获取数据
公共ArrayList findProduct(字符串名称){
String query=“Select*FROM”+表\标签+”,其中“+键\名称+”=\”“+名称+”\”;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(查询,空);
ArrayList listOfNames=新的ArrayList();
if(cursor.moveToFirst()){
做{
添加(新名称(Integer.parseInt(cursor.getString(0))、cursor.getString(1)、cursor.getString(2)));
}while(cursor.moveToNext());
cursor.close();
db.close
返回名称列表;
}
//在微调器上添加数据
public void addItemsOnSpinner(){
微调器mSpinner=(微调器)findViewById(R.id.mSpinner);
ArrayList=新建ArrayList();
用于(名称:findProduct(“测试”)){
list.add(name.getValue());
}
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,列表);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
mSpinner.setAdapter(dataAdapter);
}
我已经尝试过了,但他现在只导出最后一个值:/t尝试将Name names=new Name();
放在do whilejava.util.ArrayList中,无法在main activity中分配给变量名。我已经尝试过了,但他现在只导出最后一个值:/t尝试将Name Name=new Name()放在do whilejava.util.ArrayList中;
在do whilejava.util.ArrayList中,无法将其分配给MainActivityjava.util.ArrayList中的变量名无法将其分配给MainActivityjava.util.ArrayList中的变量名无法将其分配给MainActivity中的变量名