在微调器中获取字符串地址而不是从 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
属性.
为什么我得到的是地址而不是值?
我正在从 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
属性.