android - RecyclerView से सभी आइटम निकालें




adapter android-recyclerview (8)

मैं अपने onRestart विधि में अपने onRestart से सभी तत्वों को निकालने की कोशिश कर रहा हूं ताकि आइटम दो बार लोड न हों:

@Override
protected void onRestart() {
    super.onRestart();

    // first clear the recycler view so items are not populated twice
    for (int i = 0; i < recyclerAdapter.getSize(); i++) {
        recyclerAdapter.delete(i);
    }

    // then reload the data
    PostCall doPostCall = new PostCall(); // my AsyncTask... 
    doPostCall.execute();
}

लेकिन किसी कारणवश मैंने adapter में बनाई गई delete विधि ठीक से काम नहीं कर रही है:

RecyclerAdapter.java में:

public void delete(int position){
    myList.remove(position);
    notifyItemRemoved(position);
}

public int getSize(){
    return myList.size();
}

मुझे लगता है कि पूरी सूची के बजाय मेरी सूची का प्रत्येक अन्य आइटम हटा दिया जाता है।

एक सूची के साथ यह इतना आसान था और मुझे बस adapter.clear() कहा जाता था। adapter.clear()

क्या कोई कृपया मुझे कोड को ठीक करने में मदद कर सकता है?

मुझे लगता है कि मुझे notifyItemRangeRemoved(...,...); का उपयोग करना चाहिए notifyItemRangeRemoved(...,...); लेकिन मुझे यकीन नहीं है कि कैसे। TIA


यह मेरे लिए बहुत अच्छा काम करता है:

public void clear() {
    int size = data.size();
    if (size > 0) {
        for (int i = 0; i < size; i++) {
            data.remove(0);
        }

        notifyItemRangeRemoved(0, size);
    }
}

स्रोत: https://github.com/mikepenz/LollipopShowcase/blob/master/app/src/main/java/com/mikepenz/lollipopshowcase/adapter/ApplicationAdapter.java

या:

public void clear() {
    int size = data.size();
    data.clear();
    notifyItemRangeRemoved(0, size);
}

तुम्हारे लिए:

@Override
protected void onRestart() {
    super.onRestart();

    // first clear the recycler view so items are not populated twice
    recyclerAdapter.clear();

    // then reload the data
    PostCall doPostCall = new PostCall(); // my AsyncTask... 
    doPostCall.execute();
}

Xamarin.Android पर, यह मेरे लिए काम करता है और परिवर्तन लेआउट की आवश्यकता है

 var layout = recyclerView.GetLayoutManager() as GridLayoutManager;
 layout.SpanCount = GetItemPerRow(Context);
 recyclerView.SetAdapter(null);
 recyclerView.SetAdapter(adapter); //reset

मेरे मामले के लिए एक खाली सूची को जोड़ने का काम किया।

List<Object> data = new ArrayList<>();
adapter.setData(data);
adapter.notifyDataSetChanged();

रीसायकल आइटम को खाली करने का एक और तरीका एक नया खाली एडेप्टर स्थापित करना है।

mRecyclerView.setAdapter(new MyAdapter(this, new ArrayList<MyDataSet>()));

यह शायद सबसे अधिक अनुकूलित समाधान नहीं है, लेकिन यह एक आकर्षण की तरह काम कर रहा है।


ListView clear() का उपयोग करता है।

लेकिन, अगर आप इसे RecyclerView लिए कर रहे हैं। सबसे पहले आपको अपना RecyclerView.Adapter साफ़ करना होगा। notifyItemRangeRemoved(0,size) साथ notifyItemRangeRemoved(0,size)

उसके बाद, केवल आप recyclerView.removeAllViewsInLayout()


अपनी सहायता कीजिये:

public void clearAdapter() {
    arrayNull.clear();
    notifyDataSetChanged();
}

public void clearData() {
    mylist.removeAll(mylist);
    mAdapter.notifyDataSetChanged();
    recyclerView.setAdapter(mAdapter);
}

recyclerView.removeAllViewsInLayout();

उपरोक्त लाइन आपको लेआउट से सभी विचारों को हटाने में मदद करेगी।

तुम्हारे लिए:

@Override
protected void onRestart() {
    super.onRestart();

    recyclerView.removeAllViewsInLayout(); //removes all the views

    //then reload the data
    PostCall doPostCall = new PostCall(); //my AsyncTask... 
    doPostCall.execute();
}




android-recyclerview