如何正确使用Android中的应用程序计费服务?

时间:2012-06-19 21:30:31

标签: java android in-app-purchase in-app-billing

我在Android中应用服务是全新的,对我来说似乎有点复杂,我已经完成了所有初始程序来实现它,但我陷入购买状态(我想是这样)。我有一个列表视图,在onitem点击监听器中我已经完成了这个:

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        purchaseposition= position;
        if(list.get(position).getPurchase().contentEquals("Buy")){
         val = billingService.requestPurchase("android.test.purchased", payloadContents);

        }else{
        SharedPreferences.Editor editor = preference.edit();
        editor.putInt("URLPOSITION", position);
        editor.commit();
        Intent quiz=new Intent("com.powergroupbd.appbil.QUIZACTIVITY");
        startActivity(quiz);
        }
    }

这意味着如果列表视图包含文本“购买”,那么我发送请求到市场购买测试购买ID。现在我想要,如果购买成功,那么我将更改列表视图的文本'购买'到'播放'并启用测验。但是这里是我认为我错过了的部分。在购买状态更改中,我编写了此代码来执行此操作:

@Override
        public void onPurchaseStateChange(PurchaseState purchaseState,
                String itemId, int quantity, long purchaseTime,
                String developerPayload) {
            if (Consts.DEBUG) {
                Log.i("Tag", "onPurchaseStateChange() itemId: " + itemId + " "
                        + purchaseState);
            }

            if (purchaseState == PurchaseState.PURCHASED) {
                ownedItems.add(itemId);
                list.get(purchaseposition).setPurchase("Play");
            }
            // YOU can also add other checks here
        }

但是它永远不会改变列表视图的文本,我永远不会参加测验,请我完整的想法我该怎么办?我的错误在哪里?谢谢

1 个答案:

答案 0 :(得分:1)

您如何显示数据?

如果您使用的是列表视图和数组适配器,则需要调用adapter.notifyDataSetChanged();这会告诉适配器您有更新的信息,它可以刷新列表。如果您不使用数组适配器,则可以调用findViewById(int)并动态更改视图。