package com.example.agvcontroller; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.example.agvcontroller.socket.SocketManager; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; public class StartActivity extends AppCompatActivity { private RecyclerView recyclerView; private List items; private ItemAdapter adapter; SocketManager socketManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); items = new ArrayList<>(); adapter = new ItemAdapter(items); recyclerView.setAdapter(adapter); EventBus.getDefault().register(this); adapter.setmOnItemClickListener(new ItemAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { Context context = view.getContext(); Intent intent = new Intent(context,MainActivity.class); intent.putExtra("message", items.get(position).getIp()); startActivityForResult(intent,1); } }); socketManager = new SocketManager(); socketManager.startServer(8081); } @Subscribe(threadMode = ThreadMode.MAIN) public void onDeviceConnected(Item deviceAddress) { Log.i("EventBus", "Received device connected: " + deviceAddress); items.add(new Item("1",deviceAddress.getIp(),"3")); if (items.size() > 0) { for (Item item : items) { Log.i("Item",item.getIp()); } } adapter.notifyDataSetChanged(); } @Subscribe(threadMode = ThreadMode.MAIN) public void onDeviceDisconnected(String deviceIp) { Log.i("EventBus", "Received device disconnected: " + deviceIp); for (int i = 0; i < items.size(); i++) { if (items.get(i).getIp().equals(deviceIp)) { items.remove(i); break; } } adapter.notifyDataSetChanged(); } }