Activity/fragmentとadapter間の通信
1350 ワード
Activity/fragmentとadapter間の通信
adapterを必要とするさまざまなコントロールを使用する場合、activity/fragmentとadapterの間でデータを転送したり、メソッドを呼び出したりする必要があります.基本的にはadapterでactivityのメソッドを呼び出す必要がありますが、activityでadapterのメソッドを呼び出す必要がある場合は、直接adapterのオブジェクトで呼び出せばいいです.ここで提供する方法はコールバックインタフェースを書くことです.activityの参照をadapterに転送することはお勧めしません.adapterが時間がかかるとメモリが漏れる可能性があります.例えば、私は今activityのrecyclerviewのadapterを持っています.recyclerviewの各itemにはtextviewがあります.textviewの内容が「こんにちは」のときにこのtextviewをactivityに伝えてさらに操作する必要があります.1.まずadapterにインタフェースを新規作成します.public interface Interface{
void onWork(View view);// , adapter activity 。
}
2.次にadapterにメンバー変数を追加します.private Interface mListener;
3.次にadapterの構造方法にこのインタフェースのインスタンスを入力します.もしあなたの構造方法がすでに多くの使用が不便であれば、構造方法を追加することができます.Interface(Interface mListener){
this.mListener = mListener;
}
4.次にadapterで適切な場所でmListenerでインタフェースのメソッドを呼び出す.この例ではonBindView Holderで次のコードを呼び出すべきである. if(TextUtil.equals(" ",textview.getText.toString()){
mListener.onWork(textview);
}
4.activityでnew adapterのところに行って次のコードに変更します.Adapter adapter = new Adapter(new Adapter.Interface{// adapter
@Override
public void onWork(View view) {
fun(view);// adapter 。
}
})
以上、ご指摘を歓迎いたします.
public interface Interface{
void onWork(View view);// , adapter activity 。
}
private Interface mListener;
Interface(Interface mListener){
this.mListener = mListener;
}
if(TextUtil.equals(" ",textview.getText.toString()){
mListener.onWork(textview);
}
Adapter adapter = new Adapter(new Adapter.Interface{// adapter
@Override
public void onWork(View view) {
fun(view);// adapter 。
}
})