在adaper中插入新值时,ArrayList正在清除

时间:2017-09-20 11:47:04

标签: android arraylist android-recyclerview

我有一个回收者视图,显示水果列表。每个项目都有一个购买按钮。当我单击列表中项目的购买按钮时,该项目的详细信息应通过意图传递到订单列表页面,并应显示在回收站视图中。我使用ArrayList传递数据然后,当我点击继续按钮时,它将返回水果列表页面,我想购买另一种水果。但我的问题是,当我点击另一个项目的购买按钮时,只有该特定项目显示在订单列表中。上一个项目丢失,回收者视图只显示一行。(即最新数据)。任何人都可以帮忙吗?

这是适配器代码:

    public ViewHolder(View view) {
        super(view);
        fruitname = (TextView) view.findViewById(R.id.category_name);
        rate = (TextView) view.finenter code heredViewById(R.id.rate);
        buy = (TextView) view.findViewById(R.id.buy);
        mProfilepic = (ImageView) view.findViewById(R.id.profilepic);

    }
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
    View rootView = LayoutInflater.
            from(mContext).inflate(R.layout.list_item, null, false);
    RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
    rootView.setLayoutParams(lp);
    return new ViewHolder(rootView);
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
    item = mListItem.get(position);

    final ViewHolder mViewHolder = (ViewHolder) viewHolder;

    mViewHolder.fruitname.setText(item.get_name());

    mViewHolder.rate.setText(item.get_email()+"/kg");

    }
    mViewHolder.buy.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            item1.set_contact(mListItem.get(position).get_designation());
            item1.set_bank_fee(mListItem.get(position).get_name());
            item1.set_category(mListItem.get(position).get_email());                                     
            dataItem.add(item1);

      Intent intent = new Intent(mContext,OrderListActivity.class);
      intent.putExtra("arraylist",dataItem);
      mContext.startActivity(intent);

        }
    });

}

@Override
public int getItemCount() {
    return mListItem.size();
}

注意:我使用了notifyDataSetChanged。

   @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.order_list);
    mrecyclerview = (RecyclerView)findViewById(R.id.fruits_recycler);
    mrecyclerview.setLayoutManager(new 
    LinearLayoutManager(getApplicationContext()));

   dataItem = 
   (ArrayList<ListItem>)getIntent().getSerializableExtra("arraylist");
   mOrderAdapter = new OrderAdapter(OrderListActivity.this,dataItem);
    mrecyclerview.setAdapter(mOrderAdapter);
    mOrderAdapter.notifyDataSetChanged();
} 
}

1 个答案:

答案 0 :(得分:0)

试试这个。

Intent intent = new Intent(mContext,OrderListActivity.class);
// edited here
intent.putParcelableArrayListExtra("arraylist", productList);
mContext.startActivity(intent);

下一个活动。

ArrayList<ListItem>) dataItem = getIntent().getParcelableArrayListExtra("arraylist");
if (dataItem != null && dataItem.size() > 0) {
    mOrderAdapter = new OrderAdapter(OrderListActivity.this, dataItem);
    mrecyclerview.setAdapter(mOrderAdapter);
    // remove this 
    // mOrderAdapter.notifyDataSetChanged(); 
}