2016-09-02 13 views
0

アダプタ:メソッド呼び出し

check_list_item.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     JPrequirements.prepareSelection(v, getAdapterPosition()); 
    } 
}); 

JPrequirementsが活動です。 prepareSelectionはアクティビティ内の非静的メソッドです。私はアダプタからアクセスできません。

ERROR:

non static method cannot be referenced from a static context

権利です。私が試した理由:

JPrequirements().prepareSelection(v, getAdapterPosition()); // Creating an instance... 

しかし、ここではすべてのアクティビティコンポーネントが失われています。例えば。レイアウトコンポーネントおよびその他のサポート変数が含まれます。私はそれを望んでいない。これに対処する最善の方法は何ですか?アダプタからアクティビティに更新された値を取得するにはどうすればよいですか?それで、私はそれをリアルタイムで表示することができます。

ありがとうございました。

+0

インターフェイスを使用できます。 –

答えて

2

interfaceでこれを達成できます。あなたActivityinterfaceを実装して、今すぐ

public interface ActivityAdapterInterface { 
    public void prepareSelection(View v, int position); 
} 

:まず、としてinterfaceクラスを定義

public class JPrequirements extends AppCompatActivity implements ActivityAdapterInterface { 
    ... 
    public void prepareSelection(View v, int position) { 
     // cool stuff here 
    } 
    ... 
} 

あなたはそのコンストラクタを介して、あなたのAdapterthisインタフェース参照を渡すことを確認してください。あなたのAdapterinterfaceを提供するために、[EDIT]

はそれをコンストラクタを提供する

check_list_item.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mActivityAdapterInterface.prepareSelection(v, getAdapterPosition()); 
    } 
}); 

:そして、最後にとしてクリックでそれを呼び出します。

public class YourAdapter ... { 

    private ActivityAdapterInterface mActivityAdapterInterface; 

    public YourAdapter(..., ActivityAdapterInterface activityAdapterInterface) { 
     activityAdapterInterface = mActivityAdapterInterface; 
    } 

} 
+0

ちょうどこれが好きです:-) –

+0

アダプタで 'mActivityAdapterInterface'を取得するにはどうしたらいいですか? –

+0

@RonakPatel上記のアダプタを確認してください – Shaishav

関連する問題