アンドロイドKotlin:どのように異なる(第三)Activityから更新リストを表示します

jt_3232:

私は別のアクティビティを開く「プレーヤーを追加」する主な活動上のボタンを持ってKotlinでAndroidアプリを、構築しています。この「追加プレーヤー」アクティビティでは、手動で第三、「ポップアップ」の活動を立ち上げるプレーヤーを、追加することを選択することができます。人は情報を入力し、[追加]を打ちます。そのクリックで、私はすぐに新しい「プレイヤー」オブジェクトを作成し、主な活動の現役選手のリストビューを更新します。

私が使用することを読んでadapter.notifyDataSetChanged()、しかし、問題は、私はそのアダプタ(ArrayAdapter)オブジェクトへの参照を取得する方法を見つけることができない、です。これは、Javaだった場合、私はちょうどアダプタは世界的に利用できるようにする、または公共の静的な、そのようなことでしょう。しかし、これはすべてが私のために一体として混乱さKotlinです。誰もが通過する「コンテキスト」パラメータが「これは」仕事をしませんので、私は、アダプタを初期化することはできませんので、私は、アダプタがグローバルに使用することはできません。私は、パブリックまたは静的に変更する任意の関数を作成することはできません。Kotlinは、何らかの理由で私に怒っているので、私はまた、いずれかの変数をlateinitすることはできません。

私は私のアプリのための愚かなリストビューを更新しようとして2時間のように過ごしました。私が作ったアプリを練習すると、このような小さなものに巻き込ましようとすると、それはかなりがっかりしています。

私は大きな誤解を持っていると確信している、誰かが正しい方向に私を指すことができれば、それは素晴らしいことです!

あなたは非常に多くのみんなに感謝し、

その他

キングフィッシャーフォック:

お使いのアダプタ/ビュー/ ActivityContextグローバル変数をしないでください、そうでない場合、あなたは本当に大きなメモリの問題を取得します。

あなたは、使用しようとすべきローカル放送受信機をアダプタを持って活動Aからは、登録することができますLocal BroadCast receiveronCreate任意の変更アダプタアクションに耳を傾けます。ここでは例を示します。

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("YourAdapaterChangeAction.");

LocalBroadcastManager.getInstance(this).registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(final Context context, final Intent intent) {
            // check your action with if/else
            //adapter.notify....
        }
},intentFilter);

その後、あなただけ発射できるLocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("YourAdapaterChangeAction"));アダプタを更新する一切の活動から。

P / S:別のオプションは使用することですstartActivityForResult

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=343207&siteId=1