2014-06-06 21 views
1

我在我的MainActivity中有一個IabHelper,我正在使用它來初始設置和查詢我的應用內產品。從我的海關列表視圖適配器訪問IabHelper的最佳方式

然後,我創建一個列表視圖與所有的產品,我列表視圖中的每個項目都有一個「購買」按鈕,應該爲此項目引發購買。

我正在使用自定義適配器,並在getView函數中添加了onClickListener。

現在我的問題是使用在我的MainActivity中聲明的IabHelper成員從我的CustomAdapter類開始購買的最佳方式是什麼?

  • 聲明IabHelper在我的應用程序類
  • 使用一個靜態變量(後來我應該把它做的一切IabListeners?)
  • 任何其他的想法...?
+0

我會用單在應用程序擴展類 –

回答

0

嘗試使用界面,我已經做了這樣的:

適配器創建界面:

public interface IABHelperProvider { 
    public IabHelper getHelper(); 
} 

然後實現它向主要活動和重寫方法getHelper()方法:

@Override 
public IabHelper getHelper() { 
    // TODO Auto-generated method stub 
    return mHelper; 
} 

並稱之爲適配器

mHelper = ((IABHelperProvider)getActivity()).getHelper(); 

這將啓動購買流程

mHelper.launchPurchaseFlow(yourcontext, id, 10001, 
       mPurchaseFinishedListener, "sometext"); 

這裏是我的mPurchaseFinishedListener

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
= new IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, 
      Purchase purchase) 
    { 
     if (result.isFailure()) { 
      Toast.makeText(getActivity(), "Error", Toast.LENGTH_SHORT).show(); 
      return; 
     }  
     else if (purchase.getSku().equals(ITEM_SKU)) { 
      consumeItem(); 
      mBuyButton.setEnabled(false); 
     } 

    } 
}; 

對於最終消費使用解鎖同一項目下一步的採購項目:

public void consumeItem() { 
    mHelper.queryInventoryAsync(mReceivedInventoryListener); 
} 

private IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener 
= new IabHelper.QueryInventoryFinishedListener() { 
    public void onQueryInventoryFinished(IabResult result, 
      Inventory inventory) { 


     if (result.isFailure()) { 
      // Handle failure 
     } else { 
      mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), 
        mConsumeFinishedListener); 
      if(inventory.hasPurchase(mBook.getAppStoreProductId())){ 

      } 
     } 
    } 
}; 
+0

中,您需要使用的所有偵聽器的情況如何? –

+0

可能您需要使用某種進度條爲適配器中的每個項目運行此流程,但它不會完成。 mHelper.launchPurchaseFlow(getActivity(),someid,10001,mPurchaseFinishedListener,「sometext」);在將它們放入列表視圖之前,請檢查可用項目 – Penzzz

+0

我需要從列表視圖訪問幫助程序的原因是我在每行都有一個「購買」按鈕。一旦用戶點擊「購買」按鈕,我想開始購買流程。問題在於助手及其所有聽衆都是在我的主要活動中定義的。 –

相關問題