2个相同值的微调器如何相互选择一个微调器隐藏在第二个微调器中的值

时间:2016-08-20 13:02:49

标签: java android xml

我正在开发Android公交预约应用程序,我必须制作两个具有相同值的微调器,例如城市名称。一个微调器是选择源城市,第二个微调器是目的城市。

帮助我如何管理这两个微调器,例如在第一个微调器中选择一个项目(城市名称)隐藏第二个微调器中的该项目。

2 个答案:

答案 0 :(得分:0)

如果您想删除该特定位置项,则可以执行以下操作:

object t=m_adapterForSpinner.getitem(pos);//whr m_arrayadapter is array adapter using for filling spinner

然后从适配器中删除项目

m_adapterForSpinner.remove((CharSequence) t);

然后用适配器再次填充微调器。

现在,如果您想隐藏特定的位置项,那么您可以这样做。

public class CustomAdapter extends ArrayAdapter<String> {

 private int hidingItemIndex;

 public CustomAdapter(Context context, int textViewResourceId, String[] objects, int hidingItemIndex) {
     super(context, textViewResourceId, objects);
     this.hidingItemIndex = hidingItemIndex;
 }

 @Override
 public View getDropDownView(int position, View convertView, ViewGroup parent) {
     View v = null;
     if (position == hidingItemIndex) {
         TextView tv = new TextView(getContext());
         tv.setVisibility(View.GONE);
         v = tv;
     } else {
         v = super.getDropDownView(position, null, parent);
     }
     return v;
 }
 }

使用如下:

int hidingItemIndex = 0;

CustomAdapter dataAdapter = new CustomAdapter(this, android.R.layout.simple_spinner_item, list, hidingItemIndex);

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(dataAdapter);

答案 1 :(得分:0)

这就是我为listView做的...这也应该适用于微调器我已经为微调器修改了一下

ArrayAdapter<String> arrayAdapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,yourArray);

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, yourArray);

arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner1.setAdapter(arrayAdapter);

arrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner2.setAdapter(arrayAdapter2);

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
        //remove the selected item from other adapter
        arrayAdapter2.remove(arrayAdapter.getItem(position));
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
});

可以使用其他适配器

完成相同的操作