say_me_BaBa 2016-07-21 03:22 采纳率: 25%
浏览 1517
已结题

recyclerView的数据无法一次性更新出来(fragment)

我是用XUtils3的网络框架
这是展示解析出来的信息界面

问题:运行这个App然后点到“消息”界面(fragment),只能显示一条数据,当我切换到别的界面,然后又切换回“消息”界面,又刷新出两条数据;当全部数据全部显示出来以后,再次切换界面就会报错
代码如下

@ContentView(R.layout.fragment_message)
public class Message extends Fragment {
String url = "http://dxy.com/app/i/feed/tags2sub/list";
private String TAG = "Message";
private List messageList = new ArrayList<>();
@ViewInject(R.id.message_recycler)
private RecyclerView message_recycler;
private MyAdapter mAdapter;
public Message() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = x.view().inject(this, inflater, container);
//数据初始化
initData();
message_recycler.setHasFixedSize(true);
message_recycler.setLayoutManager(new LinearLayoutManager(getActivity()));
mAdapter = new MyAdapter();
message_recycler.setAdapter(mAdapter);
return view;

}

/**
 * 点击事件
 * @param view
 */
@Event(R.id.message)
private void onClick(View view){
    startActivity(new Intent(getActivity(), MessageActivity.class));
}
/**
 * 解析数据
 */
private void initData() {
    HashMap<String, String> map = new HashMap<>();
    map.put("ac", "d5424fa6-adff-4b0a-8917-4264daf4a348");
    HttpUtils.get(url, map, new MyCallBack<String>() {
        @Override
        public void onSuccess(String result) {

// Toast.makeText(getActivity(), ""+result, Toast.LENGTH_SHORT).show();
Gson gson = new Gson();
MessageInfo messageInfo = gson.fromJson(result, MessageInfo.class);
List items = messageInfo.getData().getItems();
messageList.addAll(items);
// mAdapter.notifyItemRangeInserted(0, messageList.size());
mAdapter.notifyDataSetChanged();
Toast.makeText(getActivity(), "--------" + messageList.size(), Toast.LENGTH_SHORT).show();
}
});
}
/**
* recyeler适配器
*/
class MyAdapter extends RecyclerView.Adapter{
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = getActivity().getLayoutInflater().inflate(R.layout.message_recycler_item, parent, false);
MyHolder myHolder = new MyHolder(view);
return myHolder;
}
@Override
public void onBindViewHolder(MyHolder holder, int position) {

        MessageInfo.DataBean.ItemsBean itemsBean = messageList.get(position);
        holder.mHb_pressure.setText(itemsBean.getTags().get(position).getTag_name());
        holder.mIntroduction.setText(itemsBean.getTags().get(position).getContent());

// notifyItemChanged(position);
// holder.itemView.setTag(itemsBean);
}

    @Override
    public int getItemCount() {
        return messageList.size();
    }
    class MyHolder extends RecyclerView.ViewHolder{
        private final TextView mHb_pressure;
        private final TextView mIntroduction;
        public MyHolder(View itemView) {
            super(itemView);
            mHb_pressure = (TextView) itemView.findViewById(R.id.HB_pressure);
            mIntroduction = (TextView) itemView.findViewById(R.id.Introduction);
        }
    }
}

}

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2017-03-05 22:28
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)