问题描述
我创建了一些代码来生成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 (将#修改为@)