我有ListView
单选模式。当用户点击列表项并且它有效时,我进行集选择。现在我需要:
ListView
项目中的播放按钮时进行设置选择。ListView
适配器中执行此操作。我尝试了一些不同的解决方案但它们无法正常工作。 在某些情况下,我进行多选,在某些情况下,我无法选择项目。
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"
/>
活动中使用的选择代码(工作正常)
// 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;
}
});
在适配器中播放按钮代码
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.");
}
}
}
});
我试图在播放按钮上添加它并且它不起作用
list.clearChoices();
list.requestLayout();
finalConvertView.setSelected(true);
如果我只添加finalConvertView.setSelected(true);
,则会进行多选
我还试图取消选择所有选择一个,但它也不起作用
for ( int i=0; i< list.getCount(); i++ ) {
list.setItemChecked(i, false);
}
finalConvertView.setSelected(true);
答案 0 :(得分:0)
你的意思是你的playImage不起作用?尝试在XML中为'playImage'添加以下内容
android:focusable="false"
也尝试添加:
android:descendantFocusability="blocksDescendants"
在listview上项目的顶级布局。