在微调器中获取字符串地址而不是从 SQLite 中的 Arraylist 中获取字符串?

Getting String address in spinner instead of Strings form Array List in SQLite?

为什么我得到的是地址而不是值?

我正在从 Url 中获取一些数据并以 JSON 格式存储在 SQLite.The 中。

 DBHandlerMain.Class
  //.....some code

@Override
  public void addResults(Results detailDB) {
    SQLiteDatabase db = this.getWritableDatabase();
    try {
        ContentValues values = new ContentValues();
        values.put(KEY_ID, detailDB.getId());
        values.put(KEY_BOARD, detailDB.getmusic());         
        values.put(KEY_IMAGE, detailDB.getimage());
        db.insert(TABLE_NAME, null, values);
        db.close();
    } catch (Exception e) {
        Log.e("problem", e + "");
    }
}
 @Override
 public ArrayList<Results> getAllResults() {

    SQLiteDatabase db = this.getReadableDatabase();

    ArrayList<Results> cityList = null;
    try {
        cityList = new ArrayList<>();
        String QUERY = "SELECT DISTINCT  _images FROM " + TABLE_NAME;
        Cursor cursor = db.rawQuery(QUERY, null);

        if (!cursor.isLast()) {
            while (cursor.moveToNext()) {
                Results all_results = new Results();
                all_results.setId(cursor.getInt(0));
                all_results.toString();
                cityList.add(all_results);
            }
        }

        db.close();
    } catch (Exception e) {
        Log.e("error", e + "");
    }
    return cityList;
}

my_activity.class 试试{

            jsonarray = jsonobject.getJSONArray("results");

            for (int i = 0; i < jsonarray.length(); i++) {
                jsonobject = jsonarray.getJSONObject(i);
                Results results = new Results();
                results.setMusic(jsonobject.optString("music"));
                results.setImage(jsonobject.optString("image"));                  
                results.setId(jsonobject.getInt("id"));

                handler.addResults(results);
            }
        } catch (JSONException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

....some code

DBHandlerMain handler;

final ArrayList<Results> myList = handler.getAllResults();

 ArrayAdapter<Results> dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item,
           myList);

                   dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        mySpinner.setAdapter(dataAdapter);

o/p : ...@1bc65f1

我尝试将 myList 转换为字符串,但结果是一样的。

ArrayList<String> newList = new ArrayList<String>(myList.size());

    for (Results myoldList : offlineList) {
        newList.add(String.valueOf(myoldList));
    }

您将对象转换为字符串的方法是错误的。

ArrayList<String> newList = new ArrayList<String>(myList.size());

for (Results myoldList : offlineList) {
    newList.add(String.valueOf(myoldList));
}

有了这个,您将获得对象标识符地址的字符串值。您的方法应如下所示:

ArrayList<String> newList = new ArrayList<String>(myList.size());

for (Results myoldList : offlineList) {
    newList.add(myoldList.getMyObjectStringAttribute());
}

其中 myoldList.getMyObjectStringAttribute() 是您要列出的对象属性。

您在列表中得到了散列,因为您的 com.Result class 没有正确的 toString 方法。在 Result class 中实现一个 toString 方法,returns 正确的 String 属性.