notigyDataSetChanged가 작동하지 않습니다! 어댑터의 목록은 notifyDataSetChanged 메소드 다음으로 여전히 비어 있습니다.RecyclerView notifyDataSetChanged가 작동하지 않습니다. notifyDataSetChanged 메소드 이후에도 어댑터의 목록이 여전히 비어 있습니다.
MainActivity :
//left menu
mRvLeftMenu = (RecyclerView) mSlidingMenu.findViewById(R.id.rv_left_menu);
//set layout manager
mRvLeftMenu.setLayoutManager(new LinearLayoutManager(this));
//init list
mSlidingData = new ArrayList<>();
mLeftMenuAdapter = new LeftMenuAdapter(this, mSlidingData);
//set adapter
mRvLeftMenu.setAdapter(mLeftMenuAdapter);
@Override
public void onLoadFinished(int requestType, BaseResultBean resultBean) {
switch (requestType) {
case MyConstants.REQUEST_RESULT_NEWS_CENTER:
List<NewsResultBean.DataBean> list = ((NewsResultBean) resultBean).getData();
작품도 같은이 난 그냥 mSlidingData에 데이터를 추가하는 경우가 작동하지 않았다
// mLeftMenuAdapter = new LeftMenuAdapter(this, list);
// mRvLeftMenu.setAdapter(mLeftMenuAdapter);
, RecyclerView가 새로 고쳐지지 것입니다! 왜?
mSlidingData.addAll(list);
mLeftMenuAdapter.notifyDataSetChanged();
및 notifyDataSetChanged 호출 후에 어댑터의 mList는 여전히 비어 있습니다! 벨로우즈와 동일합니다.
mRvLeftMenu.getAdapter().notifyDataSetChanged();
break;
}
}
어댑터 : 당신의 도움의 동료에 대한
public class LeftMenuAdapter extends RecyclerView.Adapter<LeftMenuAdapter.VH> {
private List<NewsResultBean.DataBean> mList;
private Context mContext;
private OnItemClickListener mOnItemClickListener;
public LeftMenuAdapter(Context context, List<NewsResultBean.DataBean> list) {
mList = list;
mContext = context;
}
@Override
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(mContext, R.layout.item_left_menu, null);
return new VH(view);
}
@Override
public void onBindViewHolder(final VH holder, int position) {
holder.mTvLeftMenu.setText(mList.get(position).getTitle());
final int tempPosition = position;
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null){
mOnItemClickListener.onItemClicked(v,tempPosition);
}
}
});
}
@Override
public int getItemCount() {
return mList.size();
}
class VH extends RecyclerView.ViewHolder {
@BindView(R.id.tv_left_menu)
TextView mTvLeftMenu;
View mView;
public VH(View itemView) {
super(itemView);
mView = itemView;
ButterKnife.bind(this,mView);
}
}
interface OnItemClickListener{
void onItemClicked(View view,int position);
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
}
당신은 어댑터 생성자에 빈 ArrayList에'mSlidingData'을 전달하고 있습니다. 결코 바뀌지 않습니다. 어댑터 클래스를 호출하기 전에 항목을 추가해야합니다. –
활동의 mSlidingData 값을 변경하고 있습니까? – algrid
예, 코드를 다시 확인한 후 네트워크 요청 후 mSlidingData 값을 변경했습니다. –