亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android RecyclerView 僅在關閉并重新啟動應用程序后顯示項目

Android RecyclerView 僅在關閉并重新啟動應用程序后顯示項目

人到中年有點甜 2023-07-13 14:17:06
將應用程序更新到 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);


}

希望對您有幫助。


查看完整回答
反對 回復 2023-07-13
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

layoutmanager在設置之前嘗試設置adapter



查看完整回答
反對 回復 2023-07-13
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

我猜你想在 recyclerView 中顯示你的結果。您的搜索有回調方法嗎?

您需要在該回調方法中調用notifyDataSetChanged()(設置結果然后調用notifyDataSetChanged())


查看完整回答
反對 回復 2023-07-13
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

我在 kotlin 中遇到了類似的問題,只是因為沒有添加notifyDataSetChanged()我設置數據的位置。



查看完整回答
反對 回復 2023-07-13
  • 4 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號