【问题标题】:How does data in database assign to array at different activity?数据库中的数据如何在不同的活动中分配给数组?
【发布时间】:2017-02-02 20:19:10
【问题描述】:

我的项目的目的是我想制作一张词汇卡。应用程序会给你一个英文单词,在英文单词下面会有 4 个土耳其语单词(1 个单词是真词。Ex : hello= merhaba)。你会猜到真词。我会用array 来做到这一点。我错了还是你想给我一个建议?
我一直在开发一个小项目。我想在不同的活动中使用数据库中的数据。我的数据在数据库中是这样的:

ID  word   word_tr

1   hello  merhaba

2   hi     selam

....

我希望在不同的活动(WordsActivity)中排列数据

数组1

你好

...

数组2

梅哈巴

塞拉姆 ...

这是我的代码:

package de.murattekinlive.pwords;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;


public class DataBase extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "DBWORDS";
private static final String TABLE_NAME  = "WTABLE";
private static final String ID  ="ID";
private static final String WORD   = "WORD";
private static final String WORD_TR1 = "TURKCE_1";


public DataBase(Context context){
    super(context,DATABASE_NAME,null,DATABASE_VERSION);
}

public DataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    super(context, name, factory, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_DBTABLE = "CREATE TABLE " + TABLE_NAME + "(" + ID +" INTEGER PRIMARY KEY AUTOINCREMENT," +WORD+
            " TEXT," +WORD_TR1+" TEXT" + "  )";
    db.execSQL(CREATE_DBTABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String TABLE_DELETE = "DROP TABLE IF EXISTS" + TABLE_NAME ;
    db.execSQL(TABLE_DELETE);
    onCreate(db);

}

    public long addRecord(Words words){
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(WORD,words.getWORD());
    contentValues.put(WORD_TR1,words.getTR1());
    long status = sqLiteDatabase.insert(TABLE_NAME,null,contentValues);
    sqLiteDatabase.close();
    return status;
}
    public List<Words> allRecords(){
    List<Words> wordsList = new ArrayList<>();
    String sql_query = "SELECT *FROM " + TABLE_NAME;
    SQLiteDatabase sqLiteDatabase =this.getWritableDatabase();
    Cursor cursor =sqLiteDatabase.rawQuery(sql_query,null);
    if(cursor.moveToFirst()){
        Words words =null;
        do{
            words = new Words();
            words.setID(cursor.getInt(0));
            words.setWORD(cursor.getString(1));
            words.setTR1(cursor.getString(2));
            wordsList.add(words);
        }while (cursor.moveToNext());
    }
    return wordsList;
}

public String getRandomQuote(){
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    Cursor cursor = sqLiteDatabase.query(TABLE_NAME + " ORDER BY RANDOM() LIMIT 1",new String[]
            {WORD,WORD_TR1},null,null,null,null,null);
    if(cursor.moveToFirst()){
        return
          cursor.getString(cursor.getColumnIndex(WORD))+
         cursor.getString(cursor.getColumnIndex(WORD_TR1));

    }
    else
        return "nothing";
}

}

我的 wordActivity(我想用数据完成所有任务)

package de.murattekinlive.pwords;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import java.util.List;

public class WordsActivity extends AppCompatActivity {
TextView textView;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_words);
    textView = (TextView) findViewById(R.id.textView);
    Intent intent = getIntent();
    String random = intent.getStringExtra("random"); // this is just test...
    textView.setText("Number : " + random);


}

}

【问题讨论】:

    标签: java android arrays android-sqlite


    【解决方案1】:

    我不知道我是否理解了这个问题,但是如果您想要两个数组,其中包含数据库中的每个单词,只需在您的活动中调用 allRecords() 方法,然后扫描列表以创建两个单独的数组 @987654322 @ 和turk

    然后随机选择 4 个整数(例如 0,1,2,3),并访问这些位置以在您的 textViews 中设置文本(也使用其中一个来检索英文单词)。

    如果我不理解您的要求,请告诉我!

    【讨论】:

    • 我想你完全理解了,但是我怎样才能将列表分成两个数组?如果我这样做,其余的看起来很容易。
    • @MuratTekin 创建两个 ArrayList,遍历 Listforwhile 循环或 list.iterator()),使用 Word 类中的 getter 方法,然后简单将这两个值添加到列表中。或者使用简单的数组,也是一样的:从list.size() 知道它们应该有的大小,这里很基础!我担心的是你想让整个数据库都在内存中!您应该考虑其他方法...
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多