Java 无法正确返回arraylist对象
这是我的活动课:Java 无法正确返回arraylist对象,java,android,arraylist,Java,Android,Arraylist,这是我的活动课: package com.blogspot.joyouslybeingjoy.cybpromises; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import androi
package com.blogspot.joyouslybeingjoy.cybpromises;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import java.util.ArrayList;
public class DisplayResult extends Activity {
String selectedCategory;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.verses);
Bundle b = getIntent().getExtras();
String selectedCategory = b.getString("ITEMVALUE");
//Toast.makeText(DisplayResult.this, "Category passed: " + selectedCategory,
// Toast.LENGTH_LONG).show();
final ListView lv = (ListView) findViewById(R.id.listViewItems);
ArrayList<Promise> results = null;
lv.setAdapter(new MyCustomArrayAdapter(this, results));
} // end onCreate
public ArrayList<Promise> GetPromises() {
String table = "promises";
ArrayList<Promise> promises = new ArrayList<Promise>();
Promise prms = new Promise();
SQLiteDatabase newDB;
//SQLiteDatabase db = MyDBHandler.getReadableDatabase();
ArrayList<Promise> results = null;
try {
MyDBHandler dbHandler = new MyDBHandler(this.getApplicationContext());
newDB = dbHandler.getReadableDatabase();
Cursor c = newDB.rawQuery("SELECT * FROM " + MyDBHandler.TABLE_NAME +
" WHERE KEY_CATEGORY = ?", new String[]{selectedCategory});
if (c != null) {
if (c.moveToFirst()) {
do {
String category = c.getString(c.getColumnIndex("KEY_CATEGORY"));
String book = c.getString(c.getColumnIndex("KEY_BOOK"));
String chapter = c.getString(c.getColumnIndex("KEY_CHAPTER"));
String verse = c.getString(c.getColumnIndex("KEY_VERSE"));
String word = c.getString(c.getColumnIndex("KEY_WORD"));
assert results != null;
results.add(category + book + chapter + verse + word);
} while (c.moveToNext());
} // end inner if
} // end outer if
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(), "Could not create or open the database");
} finally {
}
return results;
}
它表示外接程序ArrayList不能应用于java.lang.String。好吧,我明白了,但我该怎么解决呢?我试过灯泡里的建议。我已经研究过了,教程和其他答案都使用了这种格式。我能做些什么来修复它?谢谢大家! 因为您的ArrayList是“Promise”类型,所以您只能向其中添加“Promise”类型的对象。试试这个:
results.add(new Promise(category, book, chapter, verse, word));
结果类型为Promise,但您已将字符串类型添加到列表中。在进入while循环创建之前 ArrayList结果=新建ArrayList() 内whil环 承诺=新承诺()
承诺。添加(字符串)
结果。添加(承诺) 每次在循环中创建promise=newpromise(),否则相同的对象将出现在数组列表中
希望这有帮助您需要添加一个
Promise
对象,而不是一个串联字符串。所以类似于results.add(新承诺(类别、书籍、章节、诗句、单词))代码>谢谢!成功了!
results.add(new Promise(category, book, chapter, verse, word));