將應用程序更新到 API 28 后,我的 RecyclerView 出現了奇怪的效果。我有一個搜索按鈕,可以觸發對我所在區域的 Wifi 設備的搜索。這些項目不再直接顯示在列表中。我必須關閉并重新打開應用程序才能獲得正確的顯示。我有一個在按下按鈕時應該顯示的吐司。Toast 消息也僅在關閉和打開應用程序后顯示?;顒?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.javapublic 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); }); }
4 回答

慕仙森
TA貢獻1827條經驗 獲得超8個贊
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);
}
希望對您有幫助。

大話西游666
TA貢獻1817條經驗 獲得超14個贊
我猜你想在 recyclerView 中顯示你的結果。您的搜索有回調方法嗎?
您需要在該回調方法中調用notifyDataSetChanged()(設置結果然后調用notifyDataSetChanged())
添加回答
舉報
0/150
提交
取消