курсор sqlite для Android: получить более одной аналогичной информации - PullRequest
0 голосов
/ 08 декабря 2011

Я хочу получить оценки пользователя. Пользователь может иметь более одного балла. Но если у пользователя более одного балла, он просто показывает последний балл, а не все баллы.

Это мои коды

ScoreDetailActivity.java

public class ScoreDetailActivity extends Activity {

    protected TextView userName;
    protected TextView score;
    protected int user_Id;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scoredetail);

    user_Id = getIntent().getIntExtra("USER_ID", 0);
    SQLiteDatabase db = (new DatabaseUsername(this)).getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT alm._id, alm.nama, alm.jekel, sc._id, sc.score, sc.userId FROM almag alm LEFT OUTER JOIN score sc ON alm._id = sc.userId WHERE alm._id = ?",
                            new String[]{""+user_Id});

            if (cursor.moveToFirst()){
                do {
                        userName = (TextView) findViewById(R.id.userName);
                        userName.setText(cursor.getString(cursor.getColumnIndex("nama"))); 
                            score = (TextView) findViewById(R.id.score);
                            score.setText(cursor.getString(cursor.getColumnIndex("score")));
                   } while (cursor.moveToNext());
                }

}}

scoredetail.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
    <TextView
            android:id="@+id/userName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
            android:id="@+id/score"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

Я надеюсь, что кто-то может мне помочь. Спасибо

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

вы переопределяете ваши данные и объект каждый раз в цикле попробуйте это

userName = (TextView) findViewById(R.id.userName);
userName.setText(cursor.getString(cursor.getColumnIndex("nama"))); 
score = (TextView) findViewById(R.id.score);

StringBuffer data = new StringBuffer();
do {
   data.append(cursor.getString(cursor.getColumnIndex("score"))+"\n");
}while(cursor.moveToNext());
score.setText(data.toString());
0 голосов
/ 08 декабря 2011

Вы перезаписываете значения в ваших текстовых представлениях при каждой итерации курсора.Вам нужно поместить результаты курсора в массив и затем объединить их в длинную строку или использовать виджет, который может обрабатывать несколько значений, таких как:

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textMultiLine">
</EditText>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...