/**
* 情况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());
}
}
});