Ich habe ListView
mit Single-Choice-Modus. Ich mache die Auswahl, wenn der Benutzer auf ein Listenelement klickt und es funktioniert. Jetzt muss ich:Android listview ändern Element ausgewählten Zustand in Adapter
- machen Sie die Auswahl, wenn der Benutzer auf die Wiedergabetaste in
ListView
Element klickt. - tun Sie es in meinem
ListView
Adapter. - heben Sie die Auswahl des vorherigen Elements auf und wählen Sie das Element aus, auf das der Benutzer auf die Schaltfläche Abspielen geklickt hat.
Ich habe ein paar verschiedene Lösungen ausprobiert und sie funktionieren nicht. In einigen Fällen mache ich Mehrfachauswahl und in einigen Fällen kann ich kein Element auswählen.
xml
<ListView
android:id="@+id/menu_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/listen_price_button"
android:background="@color/rose"
android:paddingBottom="5dp"
android:paddingLeft="11dp"
android:paddingRight="11dp"
android:paddingTop="10dp"
android:scrollbars="none"
android:drawSelectorOnTop="false"
android:choiceMode="singleChoice"
/>
Code Auswahl in der Aktivität verwendet (funktioniert)
// handle click on list view item
listMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setSelected(true);
setDetailsData(position);
mSelectedPosition = position;
}
});
Play-Taste Code in Adapter
viewHolder.playImage.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Listen currentItem = mListenList.get(position);
if (currentItem.isPurchased() || currentItem.isFree()) {
Intent intent = new Intent(mContext, ListenDetailActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("listen_item", currentItem);
intent.putExtra("listen_list", mListenList);
mContext.startActivity(intent);
} else {
try {
mHelper.launchPurchaseFlow((Activity) mContext, currentItem.getSku(), 1001,
mPurchaseFinishedListener, "");
} catch (IabHelper.IabAsyncInProgressException e) {
Log.e(TAG, "Error launching purchase flow. Another async operation in progress.");
}
}
}
});
, was ich auf Play-Taste hinzuzufügen versucht und es
list.clearChoices();
list.requestLayout();
finalConvertView.setSelected(true);
wenn ich finalConvertView.setSelected(true);
hinzufügen funktionieren sie nicht nur Multiselect
auch versucht, ich mache alle auszuwählen dann abzuwählen aber es funktioniert auch nicht
for (int i=0; i< list.getCount(); i++) {
list.setItemChecked(i, false);
}
finalConvertView.setSelected(true);
mein Bild funktioniert, aber ich kann Setselection der gesamten Itemview nicht machen, wenn ich auf Play-Taste klicke. – Adnan
Von click listener versuchen Sie Folgendes zu verwenden: ((ListView) parent) .setItemChecked (position, true), um das aktuelle Element in ListView festzulegen – alway5dotcom