第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在回收站視圖中自動更新項(xiàng)目數(shù)據(jù)?

如何在回收站視圖中自動更新項(xiàng)目數(shù)據(jù)?

慕碼人2483693 2023-03-31 10:07:01
假設(shè)其中有一個RecyclerView包含CardView,在每張卡片中,即項(xiàng)目中有兩個TextView用于設(shè)備名稱,另一個用于 rssi 級別,因此當(dāng)用戶刷新數(shù)據(jù)時,只有 rssi 會刷新而不是整個列表刷新.我已經(jīng)獲得了數(shù)據(jù),RecyclerView但它是重復(fù)的而不是更新它。模型類:-import android.support.annotation.NonNull;public class RepeaterModel implements Comparable,Cloneable{    public String macdev;    public int rssi ;    public int imageid;    public RepeaterModel(String macdev, int rssi, int imageid) {        this.macdev = macdev;        this.rssi = rssi;        this.imageid = imageid;    }    public String getMacdev() {        return macdev;    }    public void setMacdev(String macdev) {        this.macdev = macdev;    }    public int getRssi() {        return rssi;    }    public void setRssi(int rssi) {        this.rssi = rssi;    }    public int getImageid() {        return imageid;    }    public void setImageid(int imageid) {        this.imageid = imageid;    }    @Override    public int compareTo(@NonNull Object o) {        RepeaterModel compare =(RepeaterModel)o;        if(compare.getMacdev().equals(this.macdev) && compare.getImageid()==this.imageid && compare.getRssi()==this.rssi)        {            return 0;        }        return 1;    }    @Override    public RepeaterModel clone()    {        RepeaterModel clone;        try {            clone = (RepeaterModel) super.clone();        } catch (CloneNotSupportedException e) {            throw new RuntimeException(e); //should not happen        }        return clone;    }}
查看完整描述

4 回答

?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個贊

假設(shè)您的適配器有一個私有字段mItems和一個如下所示的公共方法

public void setItems(List<YourClass> items){
    mItems= items;
    notifyDataSetChanged();
}

調(diào)用此方法將刷新您的回收站視圖?;蛘撸梢韵襁@樣簡單地通知您的適配器:

yourAdapterInstance.notifyDataSetChanged();


查看完整回答
反對 回復(fù) 2023-03-31
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個贊

DiffCallback 的實(shí)現(xiàn)工作不正常:


@Override

public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {

    return newList.get(newItemPosition).getMacdev()==oldList.get(oldItemPosition).getMacdev() ;

}

使用 equals 方法而不是 '=='


    @Override

    public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {

        return newList.get(newItemPosition).getMacdev().equals(oldList.get(oldItemPosition).getMacdev()) ;

    }

此外, this.notifyItemChanged(position);從方法中刪除public void onBindViewHolder(CryptoViewHolder holder, int position, List<Object> payloads) {

還需要在發(fā)送更新之前更新列表。


public void setData(ArrayList<RepeaterModel> newData) {


    DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new 

    MyDiffUtilCallBack(newData, data));


    data.clear();

    this.data.addAll(newData);

    diffResult.dispatchUpdatesTo(this);

}

PS:代碼可能無法正常工作,將顏色更改為綠色可能會影響回收的“未更新”項(xiàng)目。最好通過將編輯/更新的信息添加到模型來更改 RepeaterModel。


查看完整回答
反對 回復(fù) 2023-03-31
?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個贊

您應(yīng)該只設(shè)置adapterie一次。并且在您要更改用于刷新列表的recylerview.setAdapter(adapter)數(shù)據(jù)的任何其他地方。它只會刷新更改而不是整個列表。Arraylistadapter.notifyDatasetChanged()

查看完整回答
反對 回復(fù) 2023-03-31
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個贊

您應(yīng)該將 notifyItemChanged() 與自定義對象一起使用,而不是 notifyDatasetChanged。


創(chuàng)建數(shù)據(jù)類說 UpdateRecord 有 2 個成員


data class UpdateRecord(val _name : String? , val _rssi :String?)

當(dāng) rssi 變化時,調(diào)用 Adapter 的


notifyItemChange(position, UpdateRecord(null, newRssi))

您將收到 onBindViewHolder(position, payload) 調(diào)用,payload 中的第一個對象是 UpdateRecord 對象。檢查并做


val updateRecord = payload[0] as UpdateRecord

if (updateRecord._name != null) {

  // update name text view

}

if (updateRecord._rssi != null) {

  // update rssi text view

}

這就是RecyclerView中的部分更新機(jī)制,只更新發(fā)生變化的部分。


查看完整回答
反對 回復(fù) 2023-03-31
  • 4 回答
  • 0 關(guān)注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號