LaProf:
私は私が私の地域でのWiFiデバイスの検索をトリガーする検索ボタンを持っているAPI 28に私のアプリを更新した後、私は私のRecyclerViewと不思議な効果を持っています。アイテムは、もはやリストに直接表示されません。私は、正しい表示を取得するにはアプリを閉じて再度開く必要があります。
私はボタンが押されたときに表示されるべきで乾杯を持っています。トーストメッセージはまた、唯一のアプリケーションを閉じて開いた後、表示されています。
Activity.kt
private fun setFloatingSearchButton() {
floating_button_discover_devices.setOnClickListener { view ->
Snackbar.make(view, "Search for new devices ...",
Snackbar.LENGTH_SHORT).setAction("Action", null).show()
discoverDevices()
registerReceiver(mWifiReceiver, IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
mWifiManager!!.startScan()
}
}
WifiAdapter.java
public class WifiAdapter extends RecyclerView.Adapter<WifiAdapter.ViewHolder> {
private final int CONFIGURE_DEVICE_REQUEST_CODE = 0x00000001;
private static final String TAG = "WifiAdapter";
private List<DeviceWifiTo> wifis;
private Context context;
private Activity activity;
public WifiAdapter(List<DeviceWifiTo> wifis) {
this.wifis = wifis;
}
@Override
public WifiAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
activity = (Activity) context;
LayoutInflater inflater = LayoutInflater.from(context);
View wifiView = inflater.inflate(R.layout.item_wifi, parent, false);
return new WifiAdapter.ViewHolder(wifiView);
}
@Override
public void onBindViewHolder(WifiAdapter.ViewHolder holder, int position) {
DeviceWifiTo wifi = wifis.get(position);
Log.d(TAG, wifi.getSsid());
TextView wifiName = holder.wifiName;
wifiName.setText(wifi.getSsid());
CardView cardView = holder.cardView;
cardView.setOnClickListener(view -> {
Intent intent = new Intent(context, ConfigureDeviceActivity.class);
intent.putExtra("ssid", wifi.getSsid());
activity.startActivityForResult(intent, CONFIGURE_DEVICE_REQUEST_CODE);
});
}
@Override
public int getItemCount() {
return wifis.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView wifiName;
CardView cardView;
ViewHolder(View itemView) {
super(itemView);
wifiName = itemView.findViewById(R.id.text_wifi_name);
cardView = itemView.findViewById(R.id.cardView_device);
}
}
}
UcDiscoverDevicesImpl.java
private void createRecyclerView(List<DeviceWifiTo> list) {
RecyclerView recyclerView = activity.findViewById(R.id.recycler_view_wifi);
WifiAdapter adapter = new WifiAdapter(list);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(activity.getApplicationContext()));
}
Jakirホサイン:
設定してlayout manager
セットする前adapter
にrecycler view
以下のように更新し、
private void createRecyclerView(List<DeviceWifiTo> list) {
RecyclerView recyclerView = activity.findViewById(R.id.recycler_view_wifi);
recyclerView.setLayoutManager(new LinearLayoutManager(activity.getApplicationContext()));
WifiAdapter adapter = new WifiAdapter(list);
recyclerView.setAdapter(adapter);
}
それはあなたのお役に立てば幸いです。