Ich habe eine ListView mit checkedTextview Elemente als Zeilen. Die Listenansicht ist das Layout für eine Navigationsleiste.Disable Listview Artikel klickt, wenn Benutzer nicht Premium-Benutzer ist
Was ich versuche zu erreichen, ist, wenn sie nicht Premium sind, das Play Store-Dialogfeld auffordern und nicht zulassen, dass sie den Status des Schecks ändern. Wenn sie Premium sind, zeigen Sie das Premium-Dialogfeld nicht an und erlauben Sie ihnen, den Status der Kontrollkästchen zu ändern.
Ich versuchte ein if/else an mehreren verschiedenen Stellen zu prüfen, ob sie Premium sind oder nicht, aber es hat nicht funktioniert, weil ich immer noch in der Lage war zu klicken und den Zustand der Checkboxen zu ändern.
Die Elemente in der Listenansicht sind nur Premium-Benutzern zugänglich/anklickbar. Wenn sie nicht Premium sind, wenn ein Benutzer auf ein Listenelement klickt, fordert ein Dialogfeld für die Google-Wiedergabe den Benutzer zum Upgrade auf. Ich habe versucht, viele verschiedene Optionen wie listvivew.setEnabled (false) und setClickable (false) und .invalidate(); unter anderem, aber bisher hat noch nichts geklappt.
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
Fügen Sie einfach eine Bedingung in Ihren Fällen, bevor Sie den Prüfstatus steuern? (if (userUsesPremiumVersion) {click!} else {Dialog öffnen} - oder haben Sie Probleme bei der Identifizierung von Premiumbenutzern? – yennsarah
"Wenn sie nicht Premium sind, dann wird ein Benutzer durch ein Google Play-Dialogfeld dazu aufgefordert, wenn er auf ein Listenelement klickt upgrade "- also brauchen Sie den ListView OnItemClickListener, um den Dialog auszulösen? Warum sollten Sie ihn dann deaktivieren? – 0X0nosugar
Was ich versuche zu erreichen ist, wenn sie nicht Premium sind, das Play Store-Dialogfeld auffordern und nicht Erlauben Sie ihnen nicht, den Status des Schecks zu ändern.Wenn sie Premium sind, zeigen Sie nicht das Premium-Dialogfeld an, und erlauben Sie ihnen, den Status der Kontrollkästchen zu ändern –