【发布时间】:2018-11-07 13:43:56
【问题描述】:
我正在尝试在我的 recyclerView 中使用 Spinner(带下拉菜单的 3 个点),但是当我加载此 recyclerView 函数时,onItemSelected 会自动调用,然后当我按下项目时,它不再被调用.这是我在适配器中的代码:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.my_listing_item_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
((SaleAdapter.SalesViewHolder) holder).overflow.setAdapter(adapter);
((SaleAdapter.SalesViewHolder) holder).overflow.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(context, String.valueOf(position) + " item is selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
public static class SalesViewHolder extends RecyclerView.ViewHolder {
public LinearLayout overflowLayout;
public Spinner overflow;
public SalesViewHolder(View itemView, Context context) {
super(itemView);
overflowLayout = (LinearLayout) itemView.findViewById(R.id.list_item_overflow_layout);
overflow = (Spinner) itemView.findViewById(R.id.list_item_overflow);
}
}
查看代码如下:
<LinearLayout
android:id="@+id/list_item_overflow_layout"
android:layout_width="54dp"
android:layout_height="54dp"
android:layout_gravity="center_vertical"
android:orientation="vertical"
android:padding="15dp"
android:background="@drawable/ic_more_vert_24dp_grey"
>
<Spinner
android:id="@+id/list_item_overflow"
android:layout_width="24dp"
android:layout_height="24dp"
/>
</LinearLayout>
有人知道我的代码有什么问题吗?我应该将 setOnItemSelectedListener 导出到其他地方吗?
【问题讨论】:
-
所以recyclerview中的每个项目都包含一个想要模仿菜单下拉菜单的微调器?
-
托马斯,是的,你是对的
-
我认为为每个 recyclerview 项目而不是微调器实现弹出菜单是一个更好的主意。
-
正如文档所说“提供类似于 Spinner 的下拉菜单,但不保留持久选择。”
-
Tomas,但弹出菜单需要每个项目的明确坐标,这在回收站视图中是不可能的。也许您知道任何不需要的弹出菜单示例吗?
标签: android android-recyclerview spinner adapter