我在RecyclerView
遇到了问题。当我在RV中移动项目然后滚动时,看到一些项目已重复。
答案 0 :(得分:24)
我知道它迟到但希望它会帮助某人。在适配器中覆盖这两种方法。
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
答案 1 :(得分:2)
RecyclerView
将回收该视图。当您删除数据时,请调用notifyItemChanged(pos)
或notifyDataSetChanged()
方法。
答案 2 :(得分:1)
我认为我来晚了,但是无论如何,我会建议一种对我有用的方法,也许有人对此仍然面临问题。
因此,我将我的recyclerview添加到nestedScrollView内,然后为我的recyclerview禁用嵌套滚动。
使用此方法,nestedScrollView将检测到滚动,并且recyclerview在滚动时停止复制项目。
那是我的xml代码:
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"/>
</androidx.core.widget.NestedScrollView>
答案 3 :(得分:0)
这是你的notifyDataSetChanged()
问题。
检查您是否正确使用它。
那是:
private void parseJsonFeed(JSONArray response) {
for (int i = 0; i < response.length(); i++)
try {
JSONObject obj = response.getJSONObject(i);
MyData myData = new MyData();
myData.setContent_title(obj.getString("content_title"));
...
...
...
...
// adding content to array
homeList.add(myData);
} catch (JSONException e) {
e.printStackTrace();
}
//Notifying the adapter that data has been added or changed
//this must always be called else the recycler would not understand when to stop or start working.
recyclerViewAdapter.notifyDataSetChanged();
}