前提・実現したいこと
現在、Android studio(java)上でListViewを使ってリストを作っており、一定時間経過したら、ListViewに新しい情報を加えるようなシステムを作っています。その一部として、一定時間待機したら更新するプログラムを組んでいます。
発生している問題・エラーメッセージ
<MainActivity.java>の44行目の「listView.setAdapter(simpleAdapter);」の部分でおそらくListの表示ができて、kousinメソッドにて4,000msのsleepメソッドで待機した後、更新がかかると思うのですが、なぜか4,000msの間に更新前のリストは表示されずその時間は真っ白な画面で、待機後にいきなり更新後のリストが表示されます。
該当のソースコード
言語:java
<---MainActivity.java---> package com.example.experiment_main; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; public class MainActivity extends AppCompatActivity { boolean newNoodleAddFlag = false; ArrayList<HashMap<String, String>> listData = new ArrayList<>(); SimpleAdapter simpleAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // ListViewに表示する項目を生成 for (int i = 1; i <= 5; i++) { HashMap<String, String> data = new HashMap<>(); data.put("main", "時間" + i); data.put("sub", "内容" + i); listData.add(data); } simpleAdapter = new SimpleAdapter(this, listData, // 使用するデータ R.layout.custom_list_layout, new String[]{"main", "sub"}, new int[]{R.id.mainText, R.id.subText} ); ListView listView = (ListView) findViewById(R.id.list); listView.setAdapter(simpleAdapter); kousin(); } void kousin(){//更新用のメソッド listData.clear(); try { Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } for(int i = 1; i <= 10; i++){ HashMap<String,String> data = new HashMap<>(); data.put("main","メイン"+i); data.put("sub","サブ"+i); listData.add(data); } simpleAdapter.notifyDataSetChanged(); } } <---custom_list_layout.xml---> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/mainText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="メインテキスト" android:textSize="10sp"/> <TextView android:id="@+id/subText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="サブテキスト" android:textSize="15sp" android:paddingLeft="20dp"/> </LinearLayout> </LinearLayout> <---activity_main.xml---> <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.constraint.ConstraintLayout> <---custom_list_layout.xml---> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/mainText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="メインテキスト" android:textSize="10sp"/> <TextView android:id="@+id/subText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="サブテキスト" android:textSize="15sp" android:paddingLeft="20dp"/> </LinearLayout> </LinearLayout> ソースコード
試したこと
sleep,wait,for文による強制的な待機、Timerなどで時間になったら動かすようなことは試してみたのですが、どれをやっても更新前の結果は出ず、更新後の結果ばかりが出てきてしまいました。いろいろ試してみてもわからなかったので、もしかするとListViewの理解が間違っているかもしれません。
補足情報(FW/ツールのバージョンなど)
Android studio :ver3.5
Android:8.0
初心者で、どのような情報が必要なのかわからないので、必要な情報がありましたら、聞いていただけると助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/15 08:08
2019/10/15 09:18
2019/10/15 09:25
2019/10/15 12:32