Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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
Java 无法正确返回arraylist对象_Java_Android_Arraylist - Fatal编程技术网

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