在recyclerview中处理多个产品

问题描述

我创建了一些代码生成recycleview,以列出我在Google inapp结算中的所有商品。但是,只有一项会显示出来。我做错了哪一部分?对于setSkusList(Arrays.asList("onetest","diamond2")),我已经在arraylist中放入了两项,但是它仍然只向我显示一项。请帮忙。

这是我的适配器

public class MyproductAdapter extends RecyclerView.Adapter<MyproductAdapter.MyViewHolder> {

MainActivity test;
List<SkuDetails> skuDetailsList;
BillingClient billingClient;

public MyproductAdapter(MainActivity test,List<SkuDetails> skuDetailsList,BillingClient billingClient) {
    this.test = test;
    this.skuDetailsList = skuDetailsList;
    this.billingClient = billingClient;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,int i) {
    View itemView = LayoutInflater.from(test.getBaseContext())
            .inflate(R.layout.layout_product_item,viewGroup,false);
    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder,final int i) {
    myViewHolder.txt_product.setText(skuDetailsList.get(i).getTitle());

    //click
    myViewHolder.setiProductClickListener(new IProductClickListener() {
        @Override
        public void onProductClickListener(View view,int position) {
            //launch
            BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
                    .setSkuDetails(skuDetailsList.get(i))
                    .build();
            billingClient.launchBillingFlow(test,billingFlowParams);
        }
    });

}

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

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView txt_product;

    IProductClickListener iProductClickListener;

    public void setiProductClickListener(IProductClickListener iProductClickListener) {
        this.iProductClickListener = iProductClickListener;
    }

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        txt_product = (TextView)itemView.findViewById(R.id.txt_product_name);

        itemView.setonClickListener(this);
    }

    @Override
    public void onClick(View v) {
        iProductClickListener.onProductClickListener(v,getAdapterPosition());
    }
  }
}

这是我的主要活动

private void loadProductToRecyclerView(List<SkuDetails> skuDetailsList) {
    MyproductAdapter adapter = new MyproductAdapter(this,skuDetailsList,billingClient);
    recyclerProduct.setAdapter(adapter);
}

private void setupBillingClient() {
    billingClient = BillingClient.newBuilder(this).setListener(this)
            .enablePendingPurchases()
            .build();
    billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(BillingResult billingResult) {
            if (billingResult.getResponseCode() ==  BillingClient.BillingResponseCode.OK) {
                load();
                Toast.makeText(MainActivity.this,"success",Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(MainActivity.this,"fail",Toast.LENGTH_SHORT).show();
        }}

        private void load() {
            if(billingClient.isReady())
            {
                SkuDetailsParams params = SkuDetailsParams.newBuilder()
                        .setSkusList(Arrays.asList("onetest","diamond2"))
                        .setType(BillingClient.SkuType.INAPP)
                        .build();
                billingClient.querySkuDetailsAsync(params,new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(BillingResult billingResult,List<SkuDetails> list) {
                        if (billingResult.getResponseCode() ==  BillingClient.BillingResponseCode.OK)
                        {
                            loadProductToRecyclerView(list);
                            Toast.makeText(MainActivity.this,"on",Toast.LENGTH_SHORT).show();
                        }
                        else
                        {
                            Toast.makeText(MainActivity.this,"cant query product",Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        }


        @Override
        public void onBillingServicedisconnected() {
            Toast.makeText(MainActivity.this,"disconnect",Toast.LENGTH_SHORT).show();
        }
    });
}



@Override
public void onPurchasesUpdated(BillingResult billingResult,List<Purchase> purchases) {
    Toast.makeText(MainActivity.this,"purchase item: "+purchases.size(),Toast.LENGTH_SHORT).show();

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)