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 。
            }
})

以上、ご指摘を歓迎いたします.