Android sqliteを利用してデータベースの特定のデータで分岐して表示しようと考えています。
sqliteのデータを取り、データの文字一致の分岐を記述して特定のtext viewにset textをし、表示させるプログラムです。
特定のtextviewは、DesplayRERURNTRANCEJP、DesplayRERURNTRANCEOTHERの2つ用意しており、分岐が一致したら、DesplayRERURNTRANCEJP のtext viewにデータを入れて表示させ、 DesplayRERURNTRANCEOTHER のtext viewに改行だけを入れて表示させるプログラムです。
一致しなかったら、DesplayRERURNTRANCEOTHER のtext viewにデータを入れて表示させ、DesplayRERURNTRANCEJP のtext viewに改行を入れるプログラムです。
しかし、すべてのデータが片方のtext viewに表示されてしまいます。
一つ一つのデータを分岐をかけて、一つ一つ表示をしたいです。
ソースは以下になります。
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import static android.provider.BaseColumns._ID;
import static jp.go.nict.slc.sdk.sample.SQ_lite.LANGUAGE;
import static jp.go.nict.slc.sdk.sample.SQ_lite.RERUTN_TRANCERATE;
import static jp.go.nict.slc.sdk.sample.SQ_lite.TABLE_NAME;
import static jp.go.nict.slc.sdk.sample.SQ_lite.TIME;
public class kiyaku extends Activity {
private static String TAG = "showlog"; private TextView DesplayRERURNTRANCEJP; private TextView DesplayRERURNTRANCEOTHER; private DBO_Helper helper; private static String[] FROM = { _ID, RERUTN_TRANCERATE,LANGUAGE,TIME}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.seiyaku); helper = new DBO_Helper(this); // テキストビューのセット DesplayRERURNTRANCEJP = (TextView) findViewById(R.id.display_log_left); DesplayRERURNTRANCEOTHER = (TextView) findViewById(R.id.display_log_right); // ⑤以下は実行するメソッド Cursor cursor = getData(); showRETURN(cursor); // ⑥データベースを閉じる helper.close(); } // ③データベースから入力したデータの読み込み private Cursor getData() { SQLiteDatabase db = helper.getReadableDatabase(); Cursor cursor = db .query(TABLE_NAME, FROM, null, null, null, null, null); startManagingCursor(cursor); return cursor; } // ④データベースから読み込んだデータを取得します. // テキストビューを上書きして表示する private void showRETURN(Cursor cursor) { // テキストデータを組み立てるためにStringBuilderをセット StringBuilder builder = new StringBuilder("\n"); StringBuilder builderleft = new StringBuilder("\n"); while (cursor.moveToNext()) { // 各列ごとにデータを取得する
//LANGUAGEをすべて取り出している
String language = cursor.getString(2);
//sqliteデータのlanguageでenが一致したら DesplayRERURNTRANCEJP にデータを入れて表示、
// DesplayRERURNTRANCEOTHER は改行のみ
if (language.equals("en") ) { String trancelate = cursor.getString(1); String time = cursor.getString(3); builder.append(trancelate).append(" "); builder.append(time).append("\n"); DesplayRERURNTRANCEJP.setText(builder); builderleft.append("\n"); DesplayRERURNTRANCEOTHER.setText(builderleft); }
//sqliteデータのlanguageが一致しなかったら、 DesplayRERURNTRANCEOTHER にデータを入れて表示、
// DesplayRERURNTRANCEJP は改行のみ
else{
String trancelate = cursor.getString(1);
String time = cursor.getString(3); builder.append(trancelate).append(" "); builder.append(time).append("\n"); DesplayRERURNTRANCEOTHER.setText(builder); builderleft.append("\n"); DesplayRERURNTRANCEJP.setText(builderleft); } } } }
sqliteのデータベースにはこのデータが格納されています。
ID RETURNTRANCELATE LANGUAGE TIME
1 あ jp 1
2 i en 2
3 u tyu 3
4 え jp 4
5 お jp 5
そして目標の実現したい表示はこうです。
※text view区切りの|を入れています。
DesplayRERURNTRANCEJP |DesplayRERURNTRANCEOTHER
あ 1 | 改行 改行 | i 2 改行 | u 3 え 4 | 改行 お 5 | 改行
しかし、問題はこのように表示してしまいます。
※text view区切りの|を入れています。
DesplayRERURNTRANCEJP |DesplayRERURNTRANCEOTHER
改行 | あ 1 改行 | i 2 改行 | u 3 改行 | e 4 改行 | お 5
どうすればいいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/27 12:16 編集
2016/01/27 13:05