Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从数据库列加载不同的值_Android_Database_Sqlite - Fatal编程技术网

Android 从数据库列加载不同的值

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

如何从同名列(如照片)中获取不同的值

在照片中,“测试”有3个不同的值,如何将它们加载到列表视图或微调器中

我有这个代码,可以工作,但没有得到3个值,只有第一个值:

main活动

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中的变量名