试图找出更新RecyclerView适配器的问题.
在我获得新的产品列表后,我尝试:
更新创建ArrayList的片段recyclerView,将新数据设置为适配器,然后调用adapter.notifyDataSetChanged(); 那没起效.
像其他人一样创建一个新的适配器,它适用于他们,但对我没有任何改变: recyclerView.setAdapter(new RecyclerViewAdapter(newArrayList))
创建一个Adapter更新数据的方法,如下所示:
public void updateData(ArrayList<ViewModel> viewModels) {
items.clear();
items.addAll(viewModels);
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
然后每当我想更新数据列表时,我都会调用此方法; 那没起效.
要检查我是否可以以任何方式修改recyclerView,并且我尝试删除至少一个项目:
public void removeItem(int position) {
items.remove(position);
notifyItemRemoved(position);
}
Run Code Online (Sandbox Code Playgroud)
一切都保持原样.
这是我的适配器:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements View.OnClickListener {
private ArrayList<ViewModel> items;
private OnItemClickListener onItemClickListener;
public RecyclerViewAdapter(ArrayList<ViewModel> items) {
this.items = items;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View …Run Code Online (Sandbox Code Playgroud) 我在添加一些数据后尝试更新我的适配器但它没有更新,当我切换其他活动并回来时,适配器这次更新了我的代码:
void updateAdapter(){
adapter.setData(getData());
adapter.notifyDataSetChanged();
Log.d("TAG"," DATA SIZE AFTER UPDATE : "+getData().size() +" items : "+adapter.getItemCount());
}
Run Code Online (Sandbox Code Playgroud)
我的适配器:
private void createAdapter(final RecyclerView recyclerView , final List<Information> data) {
List<Information> content = new ArrayList<>();
Log.d("TAG","createAdapter Called");
final int[] currentRowPosition = {0};
content = data;
final List<Information> finalContent = content;
adapter = new ParallaxRecyclerAdapter<Information>(finalContent) {
/// my onBindViewHolder
@Override
public void onBindViewHolderImpl(final RecyclerView.ViewHolder viewHolder, final ParallaxRecyclerAdapter<Information> adapter, final int i) {
currentRowPosition[0] = i;
if ( i <= finalContent.size() -1 ){
((ViewHolder) …Run Code Online (Sandbox Code Playgroud)