我是用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);
}
}
}
}