2017-06-21 89 views
1

我想从可序列化的对象中列出数据,但它不工作显示什么。Recyclerview不显示数据可序列化

我从带有序列化对象的recyclerview中列出信息。当传递给另一个活动时,recyclerview不显示任何数据。

对不起,我的英语。

MainActivity

private void onOrderProduct() { 
    bOrder.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      Cart cart = new Cart(); 
      cart.setComida(tvTitle.getText().toString()); 
      cart.setPreco(tvTotal.getText().toString()); 
      cart.setQuantidade(tvQtd.getText().toString()); 

      Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
      intent.putExtra("cart", cart); 
      startActivity(intent); 
     } 
    }); 
} 

SecondActivity

public class SecondActivity extends AppCompatActivity { 
RecyclerView rvCart; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.secondactivity); 

    rvCart = (RecyclerView) findViewById(R.id.tela5recycler_view); 
    rvCart.setHasFixedSize(true); 

    LinearLayoutManager manager = new LinearLayoutManager(this); 

    rvCart.setLayoutManager(manager); 


    if (getIntent().getSerializableExtra("cart") != null) { 


     Intent intent = getIntent(); 

     Cart cart = (Cart) intent.getSerializableExtra("cart"); 

     ArrayList<Cart> eList = new ArrayList<>() cart; 
     Adapter adapter =new Adapter(getApplicationContext(), eList); 
     rvCart.setAdapter(adapter); 

    } 

} 
} 

适配器

public class Adapter extends RecyclerView.Adapter<Adapter.ItemViewHolder> { 

private Context context; 
private ArrayList<Cart> itemList; 

public Adapter(Context context, ArrayList<Cart> itemList){ 
    this.context = context; 
    this.itemList = itemList; 
} 

@Override 
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
    View view = inflater.from(parent.getContext()) 
      .inflate(R.layout.adapter_card, parent, false); 

    ItemViewHolder itemViewHolder = new ItemViewHolder(view); 
    return itemViewHolder; 
} 

@Override 
public void onBindViewHolder(ItemViewHolder holder, int position) { 

    Cart item = itemList.get(position); 

    holder.tvQtdcard.setText(item.getQuantidade()); 
    holder.tvComidacard.setText(item.getComida()); 
    holder.tvPrecocard.setText(item.getPreco()); 

} 



@Override 
public int getItemCount() { 
    if(itemList != null){ 
     return itemList.size(); 
    } 
    return 0; 
} 
public static class ItemViewHolder extends RecyclerView.ViewHolder{ 

    public CardView cvItem; 
    public TextView tvQtdcard, tvComidacard, tvPrecocard; 

    public ItemViewHolder(View itemView) { 
     super(itemView); 
     cvItem = (CardView)itemView.findViewById(R.id.tela1_1_1_1_1card); 
     tvQtdcard = (TextView)itemView.findViewById(R.id.tela5qtdcard); 
     tvComidacard = (TextView)itemView.findViewById(R.id.tela5comidacard); 
     tvPrecocard = (TextView)itemView.findViewById(R.id.tela5precocard); 


    } 
} 
} 

Cart.class序列化

import java.io.Serializable; 



public class Cart implements Serializable{ 

private static final long serialVersionUID = 42L; 
private String comida; 
private String quantidade; 
private String preco; 

public String getComida() { 
    return comida; 
} 

public void setComida(String comida) { 
    this.comida = comida; 
} 

public String getQuantidade() { 
    return quantidade; 
} 

public void setQuantidade(String quantidade) { 
    this.quantidade = quantidade; 
} 

public String getPreco() { 
    return preco; 
} 

public void setPreco(String preco) { 
    this.preco = preco; 
} 

public String toString(){ 
    return comida; 
} 




} 

回答

0

你缺少后adapter.notifyDataSetChanged()和你逝去空的ArrayList eList

ArrayList<Cart> eList = new ArrayList<>(); 
eList.add(cart); 
Adapter adapter =new Adapter(getApplicationContext(), eList); 
rvCart.setAdapter(adapter); 

要通过序列化对象

  • 解决方案1(Hackytack溶液)

    公共类CardListHolder实现Serializable { private ListcardList = new ArrayList <>();

    public List<Card>getCardList(){ 
        return cardList; 
    } 
    
    public void setCardList(List<Card> cardList){ 
        this.cardList=cardList; 
    } 
    

    }

    使用该持有者对象传递卡的列表

  • 解决方案2

    实现Parcelable的卡对象,它可以通过卡的列表中,但它是有点复杂的理解。尝试www.parcelabler.com自动生成卡的Parceable类。

+0

我试过,但它仍然无法正常工作 –

+0

我已经编辑我的答案,我希望它的工作原理 –

+0

你说得对。如何链接ArrayList eList和getIntent购物车?我会很感激因为我是初学者 –