2017-08-25 7 views
0

私の活動では、私は1つのrecyclerviewを持ち、各アイテムビューにボタンが含まれています。私は、いくつかのUI要素や、自分のアクティビティでアダプター自体のカスタムオブジェクトの配列などを、recyclerviewアダプターから変更できるようにしたいと考えています。今まで私は必要なビューを静的なものとして宣言しましたが、それはひどい練習であることがわかりました。AndroidからUIへの変更

例:私は、カスタムの "cart_product"オブジェクトの配列から、カスタムビューホールダーでいっぱいになったカートを表す次のrecyclerviewを持っています。 (このカスタムオブジェクトの1つは、スピンナによって表される「量」です。私はアダプタからスピナーの値を変更することによって、オブジェクトの "量"プロパティを変更できるようにしたい...どのようにこれを行うことができますか?そして、すべての製品は、(アダプタから検出された&をスワイプして)カートから削除されたとき、私はtextvieを表示したい

ScreenShot

+0

ようこそを変更!あなたの問題を解決するために、最小限で完全で再現性のある例を提供してください。それを行う方法についてはこちらを参照してください:https://stackoverflow.com/help/mcve – meenaparam

答えて

0

あなたはコールバックを使用することができます。

:アダプターで

は、インターフェイスを作成

public interface EnentHandler { 
    void handle(int position) // if u need know position. If no, just create method without params 
} 

アダプターにインターフェイスのプライベートインスタンスを作成します。

活動のEventHanlderを実装します。

public class Mainacitivity extends Activity implements YourAdapter.EnentHandler { 
//..... 
    @Override 
    void handle (int position) { 
     // TODO do whatever u want 
    } 
} 

コンストラクタのパラメータにEnentHandlerを追加します。

public YourAdapter (List<YourObject> data, EnentHandler handler) { 
    //.... 
    this.handler = handler; 
} 

を使用すると、UIコール

handler.hanlde(position); 

を変更して、アダプタを初期化するとき、最終的thisに合格する必要がある場合

adapter = new YourAdapter (data, this) 

uは(位置ではない)他の何かが必要な場合は、単にスタックオーバーフローに署名handle()方法

関連する問題