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

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

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

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

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

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

Q&A

0回答

858閲覧

Android studioでRealmデータベースに登録したデータを項目ごとに表示したい

takara12

総合スコア0

Realm

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

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

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

0グッド

0クリップ

投稿2021/04/06 20:07

前提・実現したいこと

Android studioにて"Todoリストアプリケーション"を作っています。
その中で折り畳み可能なリストのビューにデータをセットしたいのですがその時の項目として
四つの項目を設けているのですがそれぞれ'今日のタスク','明日のタスク','明日以降のタスク','期限切れのタスク'
の四つの項目を設けています。それぞれデータベースRealmに登録したデータの中から現在の日時をもとに
データをそれぞれの項目に合うデータを表示したいなっていう感じです。
その実装の仕方がイマイチわからないという状況です。

ここで発生している問題

他の人のサイトを参考にして作ったので自分で適当に自分が作りたい機能の実装ができるようにコードを書いていたのですが
setGroupName()でグループの名前がセットされるより前にmakeHome()のメソッドが呼び出されてしまうので
numの配列を作るときに項目ごとのデータの数がきちんと把握できなくなっている。
そのせいで今日のタスクと明日のタスクの数が互いに同じなら配列は問題なく機能しますが
数が違った場合には配列の要素を超えるchild_numがindexとしてセットされるので、そこでエラーが出てしまいます。
自分は今回のような形でデータを表示する+折り畳みのビューというケースを考えた場合に自分が思いついたのは
今回のような実装だったのですが他にそのような要件を満たすことができるかつもっと簡単な実装の方法もしくは違う実装の方法を知っている人がいたら教えてもらえたら幸いです。

該当のソースコード

java

1(Home.java) 2package com.example.myapplication_practice_1; 3 4import com.thoughtbot.expandablerecyclerview.models.ExpandableGroup; 5 6import java.util.ArrayList; 7import java.util.Arrays; 8import java.util.Calendar; 9import java.util.List; 10 11import io.realm.Realm; 12import io.realm.RealmResults; 13 14public class Home{ 15 private static int child_num = 0;//子の数 16 private static Child[] num = new Child[child_num]; 17 final private static int parents_num = 4;//親の数 18 private static RealmResults<Schedule> realmResults; 19 private Realm realm; 20 private ExpandableGroup groupName; 21 22 private static final String[] genres = { 23 "今日のタスク","明日のタスク","明後日以降のタスク","期限切れのタスク" 24 }; 25 26 public static List<Parent> makehome() { 27 Parent[] num = new Parent[parents_num]; 28 29 for(int i = 0; i < parents_num; i++) { 30 num[i] = new Parent(genres[i], receive_child()); 31 } 32 return Arrays.asList(num); 33 } 34 35 public static List<Child> receive_child() { 36 37 Realm realm = Realm.getDefaultInstance(); 38 RealmResults<Schedule> schedules1; 39 Calendar cal = Calendar.getInstance(); 40 int day = cal.get(Calendar.DATE); 41 42 43 44 if(groupName == "今日のタスク"){ 45 schedules1 = realm.where(Schedule.class).equalTo("Day", day).findAll(); 46 child_num = schedules1.size(); 47 }else if(groupName == "明日のタスク"){ 48 schedules1 = realm.where(Schedule.class).equalTo("Day", day+1).findAll(); 49 child_num = schedules1.size(); 50 }else{ 51 schedules1 = realm.where(Schedule.class).findAll(); 52 child_num = schedules1.size(); 53 } 54 55 for (int i = 0; i < child_num; i++) { 56 num = new Child[child_num]; 57 num[i] = new Child(schedules1.toString()); 58 } 59 return Arrays.asList(num); 60 } 61 62 63 public List getChildItems(){ 64 List itemNames = new ArrayList<>(Arrays.asList(RangeAge)); 65 return itemNames; 66 } 67 68 public List getChildItem(int index, ExpandableGroup group){ 69 Realm realm = Realm.getDefaultInstance(); 70 71 List value = new ArrayList(); 72 73 Schedule schedule = new Schedule(); 74 Calendar cal = Calendar.getInstance(); 75 int day = cal.get(Calendar.DATE); 76 77 if(group.getTitle() == "今日のタスク") { 78 RealmResults<Schedule> schedules = realm.where(Schedule.class).findAll(); 79 setGroupName(group); 80 value.add(schedules.get(index).TaskName.toString()); 81 value.add(schedules.get(index).Month); 82 value.add(schedules.get(index).Day); 83 }else if(group.getTitle() == "明日のタスク"){ 84 RealmResults<Schedule> schedules = realm.where(Schedule.class).equalTo("Day", 85 day+1).findAll(); 86 value.add(schedules.get(index).TaskName.toString()); 87 value.add(schedules.get(index).Month); 88 value.add(schedules.get(index).Day); 89 }else{ 90 value.add("hoge"); 91 value.add(1); 92 value.add(1); 93 } 94 return value; 95 } 96 97 public static setGroupName(Expandable group){ 98 this.group = group.getTitle().toString; 99 } 100 public String static getGroupName(){ 101 return this.groupName; 102 } 103 104} 105

java

1(HomeAdapter.java) 2package com.example.myapplication_practice_1; 3 4import android.util.Log; 5import android.view.LayoutInflater; 6import android.view.View; 7import android.view.ViewGroup; 8 9import com.thoughtbot.expandablerecyclerview.ExpandCollapseController; 10import com.thoughtbot.expandablerecyclerview.ExpandableRecyclerViewAdapter; 11import com.thoughtbot.expandablerecyclerview.listeners.GroupExpandCollapseListener; 12import com.thoughtbot.expandablerecyclerview.models.ExpandableGroup; 13import com.thoughtbot.expandablerecyclerview.models.ExpandableList; 14 15import java.security.acl.Group; 16import java.util.ArrayList; 17import java.util.Arrays; 18import java.util.List; 19 20public class HomeAdapter extends ExpandableRecyclerViewAdapter<Parent_ViewHolder,Child_ViewHolder> { 21 22 private String packageName; 23 private ExpandCollapseController expandCollapseController; 24 public static ExpandableGroup group; 25 26 public HomeAdapter(List<? extends ExpandableGroup> groups,String packageName) { 27 super(groups); 28 this.packageName = packageName; 29 30 this.expandCollapseController = new ExpandCollapseController(expandableList,this); 31 } 32 @Override 33 public Parent_ViewHolder onCreateGroupViewHolder(ViewGroup parent, int viewType) { 34 35 View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_parent__view_holder,parent,false); 36 return new Parent_ViewHolder(view); 37 } 38 39 @Override 40 public Child_ViewHolder onCreateChildViewHolder(ViewGroup parent, int viewType) { 41 View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_child__view_holder,parent,false); 42 return new Child_ViewHolder(view); 43 } 44 45 46 47 //データのセットを行っている 48 @Override 49 public void onBindChildViewHolder(Child_ViewHolder holder, int flatPosition, ExpandableGroup group, int childIndex) { 50 Home h = new Home(); 51 holder.set(packageName,group,childIndex); 52 } 53 54 //データのセットを行っている 55 public void onBindGrandChildViewHolder(Child_ViewHolder holder, int flatPosition, ExpandableGroup group, int childIndex) { 56 holder.set(packageName,group,childIndex); 57 } 58 59 @Override 60 public void onBindGroupViewHolder(Parent_ViewHolder holder, int flatPosition, ExpandableGroup group) { 61 62 holder.setGenre(group); 63 } 64 public int getItemCount() { 65 return expandableList.getVisibleItemCount(); 66 } 67 68 public ExpandableList getList(){ 69 return (ExpandableList) expandableList; 70 } 71} 72

java

1(Expandable_Recyclerview.java) 2package com.example.myapplication_practice_1; 3 4import androidx.appcompat.app.AppCompatActivity; 5import androidx.constraintlayout.widget.Group; 6import androidx.recyclerview.widget.GridLayoutManager; 7import androidx.recyclerview.widget.RecyclerView; 8 9import android.content.Intent; 10import android.os.Bundle; 11import android.util.Log; 12import android.view.View; 13import android.widget.Button; 14import android.widget.TextView; 15 16import com.thoughtbot.expandablerecyclerview.models.ExpandableList; 17 18import java.util.ArrayList; 19import java.util.Arrays; 20import java.util.List; 21 22import io.realm.Realm; 23import io.realm.RealmResults; 24 25import static com.example.myapplication_practice_1.Home.makehome; 26 27public class Expandable_Recyclerview extends AppCompatActivity { 28 private Button button; 29 Child_ViewHolder childViewHolder; 30 private static RealmResults<Schedule> realmResults; 31 private Realm realm; 32 33 @Override 34 protected void onCreate(Bundle savedInstanceState) { 35 super.onCreate(savedInstanceState); 36 setContentView(R.layout.activity_expandable__recyclerview); 37 38 RecyclerView recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); 39 40 recyclerView.setLayoutManager(new GridLayoutManager(this, 1)); 41 42 String packagename = getPackageName(); 43 44 HomeAdapter adapter = new HomeAdapter(makehome(), packagename); 45 recyclerView.setAdapter(adapter); 46 47 } 48}

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

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

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

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

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

hoshi-takanori

2021/04/08 01:01

Home.java ってコンパイル通らないのでは…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問