/**
* 情況1.fragment向activity傳遞值:
* 首先在fragment中寫一個接口,fragment然后在需要傳遞值得地方調用接口里面的方法,在activity中實現這個接口並重寫接口里面的方法
* 情況2.點擊Activity中的按鈕(在Activity布局中,與ViewPager同級),在當前顯示Fragment中的執行某些操作
* 思路一:通過FragmentPagerAdapter.getItem()獲取當前Fragment對象,調用執行Fragment中的public方法。
* 思路二:在Activity中定義一個接口,Fragment實現這一接口
*/
實例 通過點解RecyclerView的按鈕,Activity作出相應改變
① RecyclerView的Adapter定義接口,調用接口
②Activity中實現接口
//在Activity中
gattDeviceAdapter.setViewAlphaItem(new MultiplayerGattDeviceAdapter.ViewAlpha() {
@Override
public void setConnectDeviceButtonAlpha(float alpha) {
connectSelectedDevice.setAlpha(alpha);
}
public void setConnectDeviceButtonClickable(boolean flag){
connectSelectedDevice.setClickable(flag);
}
});
//GattDeviceAdapter中
// 適配器中定義的接口,在活動中實現
public interface ViewAlpha{
void setConnectDeviceButtonAlpha(float alpha);
void setConnectDeviceButtonClickable(boolean clickable);
}
public void setViewAlphaItem(ViewAlpha viewAlphaItem){
this.viewAlphaItem=viewAlphaItem;
}
private ViewAlpha viewAlphaItem;
//在適配器中使用接口
viewHolder.addDeviceButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position=viewHolder.getAdapterPosition();
BluetoothDevice bluetoothDevice=bluetoothDeviceArrayList.get(position);
if(mScanning){
Toast.makeText(v.getContext(),"正在掃描",Toast.LENGTH_SHORT).show();
return;
}
if(viewHolder.addDeviceButton.getText().toString()=="添加"){
selectedBluetoothDeviceList.add(bluetoothDevice);
MultiplayerModeTrainingMainActivity.selectedBluetoothDeviceSize++;
viewAlphaItem.setConnectDeviceButtonAlpha(1f);//當添加了設備,設置不透明度為1
viewAlphaItem.setConnectDeviceButtonClickable(true);//當添加了設備,設置為可以點擊
Log.d(TAG, "onClick: setConnectDeviceButtonAlpha=1f");
viewHolder.addDeviceButton.setText("刪除");
viewHolder.addDeviceFlag.setVisibility(View.VISIBLE);
Log.d(TAG, "onClick: +"+"設備數目為="+selectedBluetoothDeviceList.size()+"地址為"+getAddress());
}else{
selectedBluetoothDeviceList.remove(bluetoothDevice);
MultiplayerModeTrainingMainActivity.selectedBluetoothDeviceSize--;
if(selectedBluetoothDeviceSize==0){
viewAlphaItem.setConnectDeviceButtonAlpha(0.5f);//當全部刪除了設備,設置不透明度為0.5
viewAlphaItem.setConnectDeviceButtonClickable(false);//當刪除了設備,設置為可以點擊
Log.d(TAG, "onClick: setConnectDeviceButtonAlpha=0.5f");
}
viewHolder.addDeviceButton.setText("添加");
viewHolder.addDeviceFlag.setVisibility(View.INVISIBLE);
Log.d(TAG, "onClick: -"+"設備數目為="+selectedBluetoothDeviceList.size()+"地址為"+getAddress());
}
}
});