Skip to content

Instantly share code, notes, and snippets.

@maydin
Created September 14, 2016 05:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maydin/d1223ddd2a0086ec0c5e5c760a276b07 to your computer and use it in GitHub Desktop.
Save maydin/d1223ddd2a0086ec0c5e5c760a276b07 to your computer and use it in GitHub Desktop.
MainActivity with Rx
public class MainActivity extends AppCompatActivity implements rx.functions.Action1<Appliance>{
RecyclerView applianceListView;
ApplianceAdapter applianceAdapter;
private Subscription rxSensorSubscriptionAsync;
private RxDiscoveryManager rxDiscoveryManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeActivity();
}
private void initializeActivity() {
List<Appliance> applianceList = new ArrayList<>();
applianceAdapter = new ApplianceAdapter(this, applianceList);
applianceListView = (RecyclerView) this.findViewById(R.id.appliance_list_view);
applianceListView.setAdapter(applianceAdapter);
applianceListView.setLayoutManager(new LinearLayoutManager(this));
applianceListView.setItemAnimator(new SlideInUpAnimator(new OvershootInterpolator(1f)));
applianceListView.getItemAnimator().setAddDuration(2000);
applianceListView.getItemAnimator().setRemoveDuration(2000);
rxDiscoveryManager = new RxDiscoveryManager((NsdManager) this.getSystemService(Context.NSD_SERVICE));
}
@Override
public void call(Appliance appliance) {
if(appliance.status == Appliance.APPLIANCE_LIST_STATUS_ADDED)
MainActivity.this.applianceAdapter.addAppliance(appliance);
else
MainActivity.this.applianceAdapter.removeAppliance(appliance);
}
public void startDiscovery(View v) {
rxSensorSubscriptionAsync = rxDiscoveryManager.discoveryChanged(AsyncEmitter.BackpressureMode.BUFFER)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this);
}
@Override
protected void onPause() {
super.onPause();
rxSensorSubscriptionAsync.unsubscribe();
}
public void stopDiscovery(View v) {
if(rxSensorSubscriptionAsync == null)
return;
this.applianceAdapter.clearAppliances();
rxSensorSubscriptionAsync.unsubscribe();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment