我知道我在这里一次只能问一个问题,但我觉得这两个问题可能是由同一个问题引起的。目标是通过适配器在多个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" />
暂无答案!
目前还没有任何答案,快来回答吧!