java—使用radiogroup交换recyclerview适配器和使用微调器进行过滤的问题安卓工作室

wtlkbnrh  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(163)

我知道我在这里一次只能问一个问题,但我觉得这两个问题可能是由同一个问题引起的。目标是通过适配器在多个ArrayList之间交换,并在用户交换时保留一个过滤器。自定义对象有几个不同的ArrayList,用户可以通过单选组按钮调用AdapterSwap在这些ArrayList之间进行切换。arraylist将通过微调器选择按产品直径过滤。
问题:首先,过滤器只在适配器交换后设置,因为它应该在选择后立即过滤。
第二:微调器选择的值不会显示在微调器栏上。
我在这里探讨了一些不同的主题,但没有一个与我的情况相匹配,足以收集到任何见解。
下面是五个适配器之一的微调器过滤器的示例。

diameterSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Diameters diameterFilter = (Diameters) parent.getItemAtPosition(position);
                String clickedDiameter = diameterFilter.getProductDiameter();
                filterDiameterString = clickedDiameter;
                if(filterDiameterString == "ALL"){
                    filterDiameterString = "";
                }
                miscAdapter.getFilter().filter(filterDiameterString);
                diameterSpinner.setSelection(position);
                miscAdapter.notifyDataSetChanged();
                spinnerAdapter.notifyDataSetChanged();

                Log.d("Filter", "filter= " + filterDiameterString);
            }

下面是我如何通过无线电组交换适配器的示例。

miscButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dRecyclerView.swapAdapter(miscAdapter, true);
                miscAdapter.getFilter().filter(filterDiameterString);
                miscAdapter.notifyDataSetChanged();
            }
        });

这是我为微调器定制的适配器。

public class SpinnerAdapter extends ArrayAdapter<Diameters> {

    public SpinnerAdapter(Context context, ArrayList<Diameters> productDiameters) {
        super(context, 0, productDiameters);
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        return initView(position, convertView, parent);
    }

    @Override
    public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        return initView(position, convertView, parent);
    }

    private View initView(int position, View convertView, ViewGroup parent){
        if (convertView == null){
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.diameter_spinner_row, parent,false);
        }
        TextView diameterSetting = convertView.findViewById(R.id.spinner_text);

        Diameters current = getItem(position);

        diameterSetting.setText(current.getProductDiameter());
        return convertView;
    }
}

最后,这里是微调器的xml布局

<Spinner
        android:id="@+id/diameter_spinner"
        android:textAlignment="center"
        android:layout_width="101dp"
        android:layout_height="35dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="155dp"
        android:layout_marginTop="95dp"
        android:layout_marginEnd="155dp"
        android:background="@color/yellow" />

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题