質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

351閲覧

Realmの表示方法を変えたい

maikel

総合スコア61

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2019/01/31 17:01

編集2019/02/02 18:03

Realmを使ってデータベースから取得したのですが、表示のされ方が周りのものと違います。文字列をそのまま取り出せないでしょうか。

同じプログラムで私だけが、どうも数式みたいなのが表示されます。何らかの設定のミスかなと疑っている次第なのですが。

文字列が数式みたいになっていることに注目

全てのページのプログラムを載せるとなると、多すぎて見づらくなりそうなので、それ以外に必要なページ、プログラム等があれば載せますので教えて欲しいです。要望があり追加しました。

画像のページのプログラムです。

java

1package com.websarva.wings.amdrpod.udemyandroid11_1; 2 3import android.content.res.ColorStateList; 4import android.graphics.Bitmap; 5import android.graphics.Color; 6import android.graphics.drawable.BitmapDrawable; 7import android.os.Bundle; 8import android.support.design.widget.CollapsingToolbarLayout; 9import android.support.design.widget.FloatingActionButton; 10import android.support.design.widget.Snackbar; 11import android.support.v4.widget.NestedScrollView; 12import android.support.v7.app.AppCompatActivity; 13import android.support.v7.graphics.Palette; 14import android.support.v7.widget.Toolbar; 15import android.view.View; 16import android.widget.ImageView; 17import android.widget.TextView; 18 19import java.text.SimpleDateFormat; 20 21import io.realm.Realm; 22 23public class ShowActivity extends AppCompatActivity { 24 private Realm mRealm; 25 private int[] images={R.drawable.image0,R.drawable.image1,R.drawable.image2}; 26 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.activity_show); 31 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 32 setSupportActionBar(toolbar); 33 34 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 35 fab.setOnClickListener(new View.OnClickListener() { 36 @Override 37 public void onClick(View view) { 38 Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 39 .setAction("Action", null).show(); 40 } 41 }); 42 43 mRealm = Realm.getDefaultInstance(); 44 ImageView toolbarImage=(ImageView)findViewById(R.id.toolbarImage); 45 TextView date = (TextView)findViewById(R.id.date); 46 TextView detail = (TextView)findViewById(R.id.detail); 47 CollapsingToolbarLayout layout =(CollapsingToolbarLayout)findViewById(R.id.toolbar_layout); 48 49 //ScroollView呼び出し 50 NestedScrollView scrollView = (NestedScrollView) findViewById(R.id.scrollView); //重大なエラーあり 51 // content_showのスクロールビューと同じにする。同じようなR値が沢山あった為エラーにつながった。 52 53 54 if(getIntent() != null){ 55 long mid = getIntent().getLongExtra("id",-1); 56 Schedule sc = mRealm.where(Schedule.class).equalTo("id",mid).findFirst(); 57 58 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 59 String format =sdf.format(sc.date); 60 date.setText(format); 61 layout.setTitle(sc.title); 62 detail.setText(sc.detail); 63 toolbarImage.setImageResource(images[(int)mid %3]); 64 65 66 //Bitmap取得 67 Bitmap bitmap =((BitmapDrawable)toolbarImage.getDrawable()).getBitmap(); 68 Palette palette = Palette.from(bitmap).generate(); 69 70 //パレットから色を取得する 71 int titleColor = palette.getLightVibrantColor(Color.WHITE); 72 int bodyColor = palette.getDarkMutedColor(Color.BLACK); 73 int scrimColor = palette.getMutedColor(Color.DKGRAY); 74 int iconColor =palette.getVibrantColor(Color.LTGRAY); 75 76 layout.setExpandedTitleColor(titleColor); //eee 77 layout.setContentScrimColor(scrimColor); //画像背景 78 scrollView.setBackgroundColor(bodyColor); //本文背景 79 detail.setTextColor(titleColor); //本文文字 80 fab.setBackgroundTintList(ColorStateList.valueOf(iconColor)); //Floatingbuttonのtintカラー 81}} 82@Override 83protected void onDestroy() { 84super.onDestroy(); 85mRealm.close(); 86} 87} 88

ListViewが表示されるMainのプログラム

java

1package com.websarva.wings.amdrpod.udemyandroid11_1; 2 3import android.content.Intent; 4import android.os.Bundle; 5import android.support.design.widget.FloatingActionButton; 6import android.support.design.widget.Snackbar; 7import android.support.v7.app.AppCompatActivity; 8import android.view.View; 9import android.widget.AdapterView; 10import android.widget.Button; 11import android.widget.ListView; 12 13import java.util.Date; 14 15import io.realm.Realm; 16import io.realm.RealmResults; 17 18public class MainActivity extends AppCompatActivity { 19 private Realm mrealm; 20 private ListView list; 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); 26 27 mrealm = Realm.getDefaultInstance(); 28 list = (ListView) findViewById(R.id.list); 29 RealmResults<Schedule> schedules = mrealm.where(Schedule.class).findAll(); 30 ScheduleAdapter adapter = new ScheduleAdapter(schedules); 31 32 list.setAdapter(adapter); 33 34 Button dbTest = (Button) findViewById(R.id.dbtestbutton); 35 dbTest.setOnClickListener(new View.OnClickListener() { 36 @Override 37 public void onClick(View v) { 38 Intent intent = new Intent(MainActivity.this, RealmTestActivity.class); 39 startActivity(intent); 40 } 41 }); 42 FloatingActionButton add = (FloatingActionButton) findViewById(R.id.add); 43 add.setOnClickListener(new View.OnClickListener() { 44 //app:srcComatにエラーがついているが問題なく動くためスルー 45 @Override 46 public void onClick(View v) { 47 final long[] newId = new long[1]; 48 mrealm.executeTransaction(new Realm.Transaction() { 49 @Override 50 public void execute(Realm realm) { 51 Number num = realm.where(Schedule.class).max("id"); 52 newId[0] = 0; 53 if (num != null) { 54 newId[0] = num.longValue() + 1; 55 } 56 Schedule sc = realm.createObject(Schedule.class, newId[0]); 57 sc.date = new Date(); 58 sc.title = ""; 59 sc.detail = ""; 60 } 61 }); 62 Intent i = new Intent(MainActivity.this, inputActivity.class); 63 i.putExtra("id", newId[0]); 64 startActivity(i); 65 } 66 }); 67 list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 68 @Override 69 public void onItemClick(AdapterView<?> parent, View view, int position, long l) { 70 ScheduleAdapter adapter = (ScheduleAdapter) list.getAdapter(); 71 Schedule sc = adapter.getItem(position); 72 Intent i = new Intent(MainActivity.this, ShowActivity.class); 73 i.putExtra("id", sc.id); 74 //でかいミス発生!そしててこずった!putExtraのnameはgetExtraと揃えること。大文字小文字まできっちりと。 75 startActivity(i); 76 } 77 }); 78 list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 79 @Override 80 public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 81 ScheduleAdapter adapter = (ScheduleAdapter) list.getAdapter(); 82 final Schedule sc = adapter.getItem(position);//データベースからposition取得。select文の代わりになる 83 mrealm.executeTransaction(new Realm.Transaction() { 84 @Override 85 public void execute(Realm realm) { 86 sc.deleteFromRealm(); 87 } 88 }); 89Snackbar.make(view,"削除しました",Snackbar.LENGTH_LONG) 90.setAction("OK", new View.OnClickListener() { //スナックバーはアクションを追加できる 91@Override 92public void onClick(View v) { 93Snackbar.make(v,"OKが押された時の処理",Snackbar.LENGTH_SHORT).show(); 94}}) 95.show(); 96return true; 97}});} 98 99@Override 100protected void onDestroy() { 101super.onDestroy(); 102mrealm.close();}} 103

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2019/02/01 20:57

オブジェクトDBらしいので、クエリで直にオブジェクトが返ってるのではないかと…。 こんなコードだけでは入れ方も分からないし、ドキュメントを読んでください。 長過ぎるとか気にする必要はないです。勝手に読み飛ばします。
maikel

2019/02/02 18:03

了解しました
maikel

2019/02/02 18:04

adapterのプログラム package com.websarva.wings.amdrpod.udemyandroid11_1; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.text.SimpleDateFormat; import io.realm.OrderedRealmCollection; import io.realm.RealmBaseAdapter; public class ScheduleAdapter extends RealmBaseAdapter<Schedule> { private int[] image ={R.drawable.image0,R.drawable.image1,R.drawable.image2}; public ScheduleAdapter(@Nullable OrderedRealmCollection<Schedule> data) { super(data); } private static class ViewHolder { ImageView card; TextView date; TextView title; TextView detail; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).//①Toast作成 inflate(R.layout.custom_cell, parent, false);//どんなToastか指定 viewHolder = new ViewHolder();//View作成 viewHolder.card =(ImageView)convertView.findViewById(R.id.cardImage); viewHolder.date = (TextView) convertView.findViewById(R.id.date);//View一個目 viewHolder.title = (TextView) convertView.findViewById(R.id.detail);//View2個目 viewHolder.detail =(TextView) convertView.findViewById(R.id.detail); convertView.setTag(viewHolder);//作ったViewを①に代入 } else { viewHolder = (ViewHolder) convertView.getTag(); //二つ目以降 } Schedule sc = adapterData.get(position); //取り出したデータベース順に位置を決めていく SimpleDateFormat sim = new SimpleDateFormat("yyyy/MM/dd"); String format = sim.format(sc.date); viewHolder.date.setText(format); viewHolder.title.setText(sc.title); viewHolder.card.setImageResource(image[(int)sc.id % 3]); viewHolder.detail.setText(sc.detail); return convertView; } }
maikel

2019/02/02 18:05

データベースを取得したりクリエイトする画面を作っています package com.websarva.wings.amdrpod.udemyandroid11_1; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import android.widget.TextView; import java.text.SimpleDateFormat; import io.realm.Realm; public class inputActivity extends AppCompatActivity { private Realm mr; private long mId; private TextView mDate; private EditText mTitle; private EditText mDetail; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_input); mr = Realm.getDefaultInstance(); mDate = (TextView) findViewById(R.id.day); mTitle = (EditText) findViewById(R.id.title); mDetail = (EditText) findViewById(R.id.detail); if (getIntent() != null) { mId = getIntent().getLongExtra("id", -1); Schedule sc = mr.where(Schedule.class).equalTo("id", mId).findFirst(); SimpleDateFormat sim = new SimpleDateFormat("yyyy/MM/dd"); String format = sim.format(sc.date); mDate.setText(format); mTitle.setText(sc.title); mDetail.setText(sc.detail); } mTitle.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(final Editable s) { mr.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { Schedule sc = realm.where(Schedule.class).equalTo("id", mId).findFirst(); sc.title = s.toString(); } }); } }); mDetail.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { mr.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { Schedule sc = mr.where(Schedule.class).equalTo("id", mId).findFirst(); sc.detail = sc.toString(); } }); } }); } @Override protected void onDestroy() { super.onDestroy(); mr.close(); } }
maikel

2019/02/02 18:06

データベースです package com.websarva.wings.amdrpod.udemyandroid11_1; import java.util.Date; import io.realm.RealmObject; import io.realm.annotations.PrimaryKey; public class Schedule extends RealmObject { @PrimaryKey public long id; public Date date; public String title; public String detail; }
maikel

2019/02/02 18:07

字数制限があるみたくここに追記しました。かかわりのあるプログラムはこのぐらいかなと思います
wwbQzhMkhhgEmhU

2019/02/03 00:12

こちらはシンタックスハイライトもなく、インデントもできないので、質問領域に追加してください。 別にgithubやそれに似た場所に入れておいて、そこへのリンクでも構いません。 ただ、私が最初に書いたコメント内容では何が足りなかったのでしょうか? 今現在の疑問点を明快にしてください。
guest

回答1

0

自己解決

データベースに入力する際(inputActivity)、afterTextChanged(Editable s)で、書かれた文字をデータベースに登録するようにしていました。そこでEditableの変数sと違う変数を使っていたためのエラーでした。
メソッドは、バージョンによって、デフォルトで生成されてる変数名が変わってくるのですね。おかげで、原本と照らし合わせても気づきませんでした。

投稿2019/02/03 09:31

maikel

総合スコア61

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問