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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

1325閲覧

Fragment内のListViewの中身を更新したい

N.Yankee

総合スコア13

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2019/01/12 05:29

編集2019/01/13 07:20

Fragment内のListViewの中身を更新できるようにしたいのですが、方法がわからず投稿します。

更新のタイミングは

・numberPickerDialog()を呼び出し、ダイアログ内で時間を設定して「OK」を押す
・横にスライドしてFragmentが完全に切り替わったとき

この2つですが、呼び出し方がわからず詰まっています。現在の画面構成がこのような形です

現在のコードがこちらになります。

ConfigFragment.java

public class ConfigFragment extends Fragment { ListView mListView; View view; int mSecond; int mMinute; SharedPreferences preferences; SharedPreferences.Editor mEditor; View timerLayout; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_config, container, false); preferences = this.getActivity().getSharedPreferences("pref", 0); mEditor = preferences.edit(); mMinute = preferences.getInt("min",00); mSecond = preferences.getInt("sec",3); ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>(); Map<String, String> time= new HashMap<String, String>(); time.put("main", "時間"); time.put("sub",mMinute+":"+mSecond); list.add(time); SimpleAdapter adapter = new SimpleAdapter( getActivity(), list, android.R.layout.simple_list_item_2, new String[]{"main", "sub"}, new int[]{android.R.id.text1, android.R.id.text2} ); mListView = (ListView) view.findViewById(R.id.listView); mListView.setAdapter(adapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position == 0) { numberPickerDialog(); } } }); return view; } private void numberPickerDialog(){ timerLayout = getLayoutInflater().inflate(R.layout.timer_layout,null); final NumberPicker min = (NumberPicker) timerLayout.findViewById(R.id.numberPickerMin); min.setMaxValue(99); min.setMinValue(0); final NumberPicker sec = (NumberPicker) timerLayout.findViewById(R.id.numberPickerSec); sec.setMaxValue(59); sec.setMinValue(0); final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(timerLayout) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mMinute = min.getValue(); mSecond = sec.getValue(); mEditor.putInt("min",min.getValue()); mEditor.putInt("sec",sec.getValue()); mEditor.apply(); mListView.invalidateViews(); ViewGroup viewGroup =(ViewGroup) timerLayout.getParent(); viewGroup.removeView(timerLayout); } }) .show(); } }

OKボタンを押した時の処理に
「mListView.invalidateViews();」
を追記してもListViewを更新して数値も更新しようとしているのですが、全く反映されず、Fragmentの切り替えも

@Override public void onResume(){ super.onResume(); Log.d("root","rootResume!"); } @Override public void onStart() { super.onStart(); Log.d("root", "rootStart!"); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("root", "rootCreate!"); } }

このように記載しても起動時に同時に3つの処理が走り、スライドしてFragmentを切り替えてもどれもログが出力されませんでした。起動時のしょりというと、この3つしか思い当たらないのですが、Fragment切り替え時にどれをつかえばよいのでしょうか?

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

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

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

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

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

guest

回答1

0

numberPickerDialog で OK を押した時, リストに表示されているデータを更新しているのでしょうか.
SharedPreferences (をこんな形で使うのは変に見えますが) のデータは更新しているようですが, mListView のアダプタ SimpleAdapter adapter に設定した ArrayList<Map<String, String>> list の値は, onCreateView でしか設定していないようです.

投稿2019/01/20 08:28

jimbe

総合スコア12646

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問