2017-06-21 16 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()が欠落していて、

  • ソリューション1(Hackytack溶液)

    パブリッククラスCardListHolderはSerializableを{ を実装してシリアライズされたオブジェクトを渡すにはeList

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

    空のArrayListを渡していますプライベートListcardList =新しいArrayList <>();

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

    }

    カードのリストを渡すために使用、このホルダーオブジェクトを

  • ソリューション2

    カードオブジェクトのParcelableを実装し、それはカードのリストを渡すことができますが、それは少しあります理解するのは複雑です。 CardのParceableクラスを自動的に生成するには、www.parcelabler.comを試してください。

+0

私はこれを試してみましたが、それはまだ –

+0

動作しない私は、私はそれはあなたが正しい –

+0

作品を願って、私の答えを編集しました。どのようにArrayList eListをgetIntentカートにリンクするのですか?私は初心者なのでとても感謝します –

関連する問題