Android 在recyclerview中处理多个产品
我已经创建了一些代码来生成一个recycleview,在google inapp账单中列出我的所有项目。但是,只有一个项目显示出来。我哪部分做错了?对于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
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();
}