2016-03-24 15 views
0

でない場合、私は行としてcheckedTextview項目とリストビューを持ってクリックします。リストビューはナビゲーションドロワーのレイアウトです。私が達成しようとしている何無効にListView項目は、ユーザがプレミアムユーザー

は、彼らがプレミアムでない場合は、Playストア]ダイアログボックスを表示し、それらをチェックの状態を変更することはできませんではない、です。プレミアムの場合は、プレミアムダイアログボックスを表示せず、チェックボックスの状態を変更できるようにします。

/他のいくつかの異なる場所であれば、私は、彼らはプレミアムあるかどうかをチェックしてみましたが、私はまだチェックボックスの状態をクリックして、変更することができたので、それは動作しませんでした。

リストビュー内の項目では、プレミアムユーザーにクリッカブル/できる唯一のアクセスです。プレミアムでない場合、リストアイテムをクリックすると、Google Playのダイアログボックスがアップグレードを促します。私はlistvivew.setEnabled(false)とsetClickable(false)と.invalidate()の設定のような異なるオプションの多くを試してみました。 とりわけnothingsは今まで働いた。

private void addDrawerItems() { 
    String[] osArray = {"Bluetooth", "Reply to Calls", "Reply to sms", "customise message"}; 

    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, osArray); 
    mDrawerList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    mDrawerList.setAdapter(mAdapter); 



    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      CheckedTextView ctv = (CheckedTextView) view; 


      switch (position) { 

       case 0: 

         if (ctv.isChecked()) { 
          Toast.makeText(getApplicationContext(), "Bluetooth On", Toast.LENGTH_LONG).show(); 
         } else { 
          Toast.makeText(getApplicationContext(), "Bluetooth OFF", Toast.LENGTH_LONG).show(); 
         } 

        break; 

       case 1: 
        if (ctv.isChecked()) { 
         Toast.makeText(getApplicationContext(), "Calls Reply On", Toast.LENGTH_LONG).show(); 
        } else { 
         Toast.makeText(getApplicationContext(), "Calls Reply OFF", Toast.LENGTH_LONG).show(); 
        } 
        break; 

       case 2: 
        if (ctv.isChecked()) { 
         Toast.makeText(getApplicationContext(), "Sms Reply On", Toast.LENGTH_LONG).show(); 
        } else { 
         Toast.makeText(getApplicationContext(), "Sms Reply OFF", Toast.LENGTH_LONG).show(); 
        } 
        break; 

       case 3: 

        Toast.makeText(getApplicationContext(), "Customised Message", Toast.LENGTH_LONG).show(); 

        break; 
      } 
     } 
    }); 
} 

!What my Navigation Drawer Looks like1

+0

チェック状態を制御する前に条件を追加するだけですか? (場合(userUsesPremiumVersion){オープンダイアログ}他{!クリック} - またはプレミアムユーザを識別して、あなたが悩みを持っています – yennsarah

+0

「彼らはプレミアムでないならば、彼らは、リスト項目をクリックすると、Googleは、ダイアログボックスを再生するようにユーザに促すだろうか?あなたがそれを無効にしたいのですか? – 0X0nosugar

+0

私が達成しようとしているのは、プレミアムではない場合、プレイストアダイアログボックスをプロンプトし、プレミアムの場合はプレミアムダイアログボックスを表示せず、チェックボックスの状態を変更できるようにしてください –

答えて

1

あなたはユーザー権限に応じてListView選択モードを設定する必要があります。我々は仮定した場合

あなたは、その値に応じて、ユーザー状態

boolean mIsPremiumUser; 

を示すためにグローバル変数を持っている:

if (mIsPremiumUser) 
{ 
    mDrawerList.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); 
} 
else 
{ 
    mDrawerList.setChoiceMode(AbsListView.CHOICE_MODE_NONE); 
} 

これは、リスト項目のチェック可能な状態を切り替えます。 OnItemClickListenerを次のように変更する必要があります。

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
{ 
    CheckedTextView ctv = (CheckedTextView) view; 

    if (! mIsPremiumUser) 
    { 
     // code to display upgrade dialog here 
     return; 
    } 

    switch (position) 
    { 
     case 0: 
     // continue as before... 
    } 
} 
+0

本当にありがとうございました!ただ1つの問題、私はアプリを起動し、mIsPremiumUserはfalseに設定されていますが、私もそれが欲しいようにすべてが動作しますが、次に、mIsPremiumUserをtrueに変更した「テスト」ボタンをクリックします。チェックボックスは有効ではありません状態を「刻々とした」状態に変更し、トーストメッセージは常にBluetoothがオフになっているか、または「コールオフに応答する」 –

+0

私も別の質問がありました。ブルートゥースリスト項目の場合、ユーザーがチェックボックスをクリックした場合、チェックをオンまたはオフに切り替えることを希望しましたが、ユーザーがその行の他の場所をクリックすると、小さなダイアログボックスが開き、ペアデバイスのリスト私は、このエフェクト/デザインをブルートゥースのリストアイテムにのみ、他のリストアイテムに対しては、ユーザーがその行のどこかをクリックしてチェックボックスを切り替えるようにします。 –

+0

@Andrew Irvin - あなたがやっているように、ボタンを使って小さなアクティビティをテストして、ユーザーの状態を切り替えました。おそらく、あなたが[このチャットルーム](http://chat.stackoverflow.com/rooms/107355/discussion-between-0x0nosugar-and-andrew-irwin)にあなたのコードの一部を投稿してみるといいでしょう。それで。他の問題について:私は、リスト行としてカスタムViewGroupを持つカスタムアダプタを使用することによって、Bluetoothの行の特別な動作が実現できると感じています。この問題は、確かにそれ自身の疑問に見合っています。他の誰かがより洗練されたソリューションを持っているかもしれないからです。 – 0X0nosugar

関連する問題