Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在recyclerview中处理多个产品_Android_Android Recyclerview_In App Billing - Fatal编程技术网

Android 在recyclerview中处理多个产品

Android 在recyclerview中处理多个产品,android,android-recyclerview,in-app-billing,Android,Android Recyclerview,In App Billing,我已经创建了一些代码来生成一个recycleview,在google inapp账单中列出我的所有项目。但是,只有一个项目显示出来。我哪部分做错了?对于setskulist(Arrays.asList(“onetest”,“diamond2”))我已经在arraylist中放入了两项,但它仍然只向我显示一项。请帮忙 这是我的适配器 public class MyproductAdapter extends RecyclerView.Adapter<MyproductAdapter.MyVi

我已经创建了一些代码来生成一个recycleview,在google inapp账单中列出我的所有项目。但是,只有一个项目显示出来。我哪部分做错了?对于
setskulist(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());
    }
  }
}
公共类MyproductAdapter扩展了RecyclerView.Adapter{ 主要活性试验; 详细列表; BillingClient BillingClient; 公共MyproductAdapter(主活动测试、列表skuDetailsList、BillingClient BillingClient){ 这个。测试=测试; this.skudailslist=skudailslist; this.billingClient=billingClient; } @非空 @凌驾 public MyViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){ View itemView=LayoutInflater.from(test.getBaseContext()) .充气(右布局、布局、产品、视图组、假); 返回新的MyViewHolder(itemView); } @凌驾 public void onBindViewHolder(@NonNull MyViewHolder MyViewHolder,final int i){ myViewHolder.txt_product.setText(skudailslist.get(i.getTitle()); //点击 myViewHolder.setiProductClickListener(新的IProductClickListener(){ @凌驾 public void onProductClickListener(视图,int位置){ //发射 BillingFlowParams BillingFlowParams=BillingFlowParams.newBuilder() .setsku详细信息(skuDetailsList.get(i)) .build(); billingClient.launchBillingFlow(测试,billingFlowParams); } }); } @凌驾 public int getItemCount(){ 返回skuDetailsList.size(); } 公共类MyViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{ TextView txt_产品; IPProductClickListener IPProductClickListener; public void setiProductClickListener(IProductClickListener IProductClickListener){ this.iProductClickListener=iProductClickListener; } 公共MyViewHolder(@NonNull View itemView){ 超级(项目视图); txt\u product=(TextView)itemView.findViewById(R.id.txt\u product\u name); setOnClickListener(这个); } @凌驾 公共void onClick(视图v){ 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();

}
private void loadProductToRecyclerView(列表skuDetailsList){
MyproductAdapter=新的MyproductAdapter(此,skuDetailsList,billingClient);
recyclerProduct.setAdapter(适配器);
}
私有void setupBillingClient(){
billingClient=billingClient.newBuilder(此).setListener(此)
.enablePendingPurchases()
.build();
startConnection(新的BillingClientStateListener()){
@凌驾
BillingSetupFinished(BillingResult BillingResult)上的公共无效{
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK){
加载();
Toast.makeText(MainActivity.this,“success”,Toast.LENGTH_SHORT.show();
}
否则{
Toast.makeText(MainActivity.this,“fail”,Toast.LENGTH_SHORT.show();
}}
专用空心荷载(){
if(billingClient.isReady())
{
SkuDetailsParams params=SkuDetailsParams.newBuilder()
.setSkusList(Arrays.asList(“onetest”、“diamond2”))
.setType(BillingClient.SkuType.INAPP)
.build();
billingClient.querySkuDetailsAsync(参数,新SkuDetailsResponseListener(){
@凌驾
公共无效Onsku详细信息响应(BillingResult BillingResult,列表){
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK)
{
loadProductToRecyclerView(列表);
Toast.makeText(MainActivity.this,“on”,Toast.LENGTH_SHORT.show();
}
其他的
{
Toast.makeText(MainActivity.this,“无法查询产品”,Toast.LENGTH_SHORT.show();
}
}
});
}
}
@凌驾
公共无效onBillingServiceDisconnected(){
Toast.makeText(MainActivity.this,“disconnect”,Toast.LENGTH_SHORT.show();
}
});
}
@凌驾
已暂停购买的公共作废(BillingResult BillingResult,列表购买){
Toast.makeText(MainActivity.this,“采购项目:+purchases.size(),Toast.LENGTH\u SHORT.show();
}