【问题标题】:Getting String address in spinner instead of Strings form Array List in SQLite?在微调器中获取字符串地址而不是从 SQLite 中的 Arraylist 获取字符串?
【发布时间】:2016-06-27 18:51:45
【问题描述】:

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

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

 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));
    }

【问题讨论】:

  • 对不起,我没有得到你。getAllResults 在那里。 @PramodWaghmare
  • 你想看o/p吗?
  • 是的。因为它可能有助于解决您的问题
  • @G.I Joe 你如何插入你的数据,如果可能的话显示?
  • E/o/p: [com.Results@1bc65f1, com..Results@dad05d6, com.Results@3f6e057, com.Results@2c23744]

标签: android sqlite spinner


【解决方案1】:

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

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() 是您要列出的对象属性。

【讨论】:

  • 计数正确但值为 null @RicardoBarroca
【解决方案2】:

因为您的 com.Result 类没有正确的 toString 方法,您在列表中获得了哈希值。在您的 Result 类中实现一个 toString 方法,该方法返回正确的 String 属性。

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多