如何在android中从微调器列表中隐藏选定项

如何在android中从微调器列表中隐藏选定项,android,spinner,hide,Android,Spinner,Hide,我想从微调器列表中隐藏所选项目,但我没有得到答案。我只想做的和链接中的问题一样,我的代码是 toolbar.xml <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://sc

我想从微调器列表中隐藏所选项目,但我没有得到答案。我只想做的和链接中的问题一样,我的代码是

toolbar.xml

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimaryDark"
        android:minHeight="?attr/actionBarSize"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
         >

        <Spinner
            android:id="@+id/spinner_nav"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </android.support.v7.widget.Toolbar>

toolbarActivity

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#c9c9c9"
        android:orientation="vertical" >

        <include
            android:id="@+id/toolbar"
            layout="@layout/spintoolbar" />


    </LinearLayout>

spinnerAdapter

    public class CustomSpinnerAdapter extends ArrayAdapter<String> {

     private Context context1;
     private ArrayList<String> data;
     public Resources res;
     LayoutInflater inflater;

     public CustomSpinnerAdapter(Context context, ArrayList<String> objects) {
      super(context, R.layout.spinner_row, objects);

      context1 = context;
      data = objects;

      inflater = (LayoutInflater) context1
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

     }

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

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

     // This funtion called for each row ( Called data.size() times )
     public View getCustomView(int position, View convertView, ViewGroup parent) {

      View row = inflater.inflate(R.layout.spinner_row, parent, false);

      TextView tvCategory = (TextView) row.findViewById(R.id.tvCategory);

      tvCategory.setText(data.get(position).toString());

      return row;
     }
    }



spinner_row.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
   android:background="@drawable/spinner_selector"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvCategory"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="18sp"
        />

</RelativeLayout>


spinnerAcivity



      public class SpinToolbarActivity extends AppCompatActivity {

         private Toolbar toolbar;

         private Spinner spinner_nav;

         @Override
         protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.spintoolbaractivity);
          toolbar = (Toolbar) findViewById(R.id.toolbar);
          spinner_nav = (Spinner) findViewById(R.id.spinner_nav);

          if (toolbar != null) {
           setSupportActionBar(toolbar);
           getSupportActionBar().setDisplayShowTitleEnabled(false);

          }
          addItemsToSpinner();

         }

         // add items into spinner dynamically
         public void addItemsToSpinner() {

          ArrayList<String> list = new ArrayList<String>();
          list.add("Top News");
          list.add("Politics");
          list.add("Business");
          list.add("Sports");
          list.add("Movies");

          // Custom ArrayAdapter with spinner item layout to set popup background

          CustomSpinnerAdapter spinAdapter = new CustomSpinnerAdapter(
            getApplicationContext(), list);
          spinner_nav.setAdapter(spinAdapter);

          spinner_nav.setOnItemSelectedListener(new OnItemSelectedListener() {

           @Override
           public void onItemSelected(AdapterView<?> adapter, View v,
             int position, long id) {
            // On selecting a spinner item
            String item = adapter.getItemAtPosition(position).toString();

            // Showing selected spinner item
            Toast.makeText(getApplicationContext(), "Selected  : " + item,
              Toast.LENGTH_LONG).show();
           }

           @Override
           public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

           }
          });

         }

         @Override
         public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
         }
        }
toolbar.xml
工具栏活动
自旋适配器
公共类CustomSpinerAdapter扩展了ArrayAdapter{
私人语境1;
私有数组列表数据;
公共资源;
充气机;
公共CustomSpinerAdapter(上下文、ArrayList对象){
super(上下文、R.layout.spinner\u行、对象);
context1=上下文;
数据=对象;
充气器=(充气器)上下文1
.getSystemService(上下文布局\充气机\服务);
}
@凌驾
公共视图getDropDownView(int位置、视图转换视图、视图组父视图){
返回getCustomView(位置、转换视图、父级);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回getCustomView(位置、转换视图、父级);
}
//此函数为每行调用(调用data.size()次)
公共视图getCustomView(int位置、视图转换视图、视图组父视图){
视图行=充气器。充气(R.layout.spinner\u行,父级,false);
TextView tvCategory=(TextView)row.findViewById(R.id.tvCategory);
tvCategory.setText(data.get(position.toString());
返回行;
}
}
spinner_row.xml
自旋极化率
公共类SpinToolbarActivity扩展了AppCompatActivity{
专用工具栏;
私人微调器微调器导航;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.spintoolbaractivity);
toolbar=(toolbar)findviewbyd(R.id.toolbar);
微调器导航=(微调器)findViewById(R.id.spinner\u导航);
如果(工具栏!=null){
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
addItemsToSpinner();
}
//将项目动态添加到微调器中
public void addItemsToSpinner(){
ArrayList=新建ArrayList();
列表。添加(“头条新闻”);
添加(“政治”);
列表。添加(“业务”);
列表。添加(“运动”);
列表。添加(“电影”);
//自定义ArrayAdapter与微调器项布局一起设置弹出式背景
CustomSpinnerAdapter spinAdapter=新的CustomSpinnerAdapter(
getApplicationContext(),列表);
微调器导航设置适配器(SpinadAdapter);
微调器导航setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(适配器视图适配器,视图v,
内部位置,长id){
//关于选择微调器项
String item=adapter.getItemAtPosition(位置).toString();
//显示所选微调器项
Toast.makeText(getApplicationContext(),“选定:”+项,
Toast.LENGTH_LONG).show();
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
}
final ArrayList lastPressed=new ArrayList();
最终布尔值[]isFirstTime={true};
lastPressed.add(0,String.valueOf(0));//最后按下的位置
加入(1,“A”);
...
微调器导航setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(适配器视图适配器,视图v,
内部位置,长id){
...
spinAdapter.remove(list.get(position));
如果(!isFirstTime[0]){
插入(lastPressed.get(1),新整数(lastPressed.get(0));
}否则{
isFirstTime[0]=假;
}
所选字符串=((TextView)view.findViewById(R.id.tv)).getText().toString();
lastPressed.set(0,String.valueOf(position));
上次按下。设置(1,已选择);
spinAdapter.notifyDataSetChanged();
}

下面是一个B C的工作示例

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ArrayList<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");

    final ArrayList<String> lastPressed = new ArrayList<>();
    final boolean[] isFirstTime = {true};
    lastPressed.add(0,String.valueOf(0)); // last pressed position
    lastPressed.add(1,"A"); // removed object

    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.simple_view,list);
    ListView listView = (ListView) findViewById(R.id.list_view_id);
    listView.setAdapter(arrayAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            arrayAdapter.remove(list.get(position));
            if(!isFirstTime[0]){
                arrayAdapter.insert(lastPressed.get(1), new Integer(lastPressed.get(0)));
            } else {
                isFirstTime[0] = false;
            }


            String selected = ((TextView) view.findViewById(R.id.tv)).getText().toString();
            lastPressed.set(0, String.valueOf(position));
            lastPressed.set(1, selected);


            arrayAdapter.notifyDataSetChanged();
        }
    });

}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终ArrayList=新ArrayList();
列表。添加(“A”);
列表。添加(“B”);
列表。添加(“C”);
最终ArrayList lastPressed=新ArrayList();
最终布尔值[]isFirstTime={true};
lastPressed.add(0,String.valueOf(0));//上次按下的位置
lastPressed.add(1,“A”);//删除的对象
final ArrayAdapter ArrayAdapter=新的ArrayAdapter(这个,R.layout.simple_视图,列表);
ListView ListView=(ListView)findViewById(R.id.list\u view\u id);
setAdapter(arrayAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
arrayAdapter.remove(list.get(position));
如果(!isFirstTime[0]){
插入(lastPressed.get(1),新整数(lastPressed.get(0));
}否则{
isFirstTime[0]=假;
}
所选字符串=((TextView)view.findViewById(R.id.tv)).getText().toString();
lastPressed.set(0,String.valueOf(position));
上次按下。设置(1,已选择);
arrayAdapter.notifyDataSetChanged();
}
});
}
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ArrayList<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");

    final ArrayList<String> lastPressed = new ArrayList<>();
    final boolean[] isFirstTime = {true};
    lastPressed.add(0,String.valueOf(0)); // last pressed position
    lastPressed.add(1,"A"); // removed object

    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.simple_view,list);
    ListView listView = (ListView) findViewById(R.id.list_view_id);
    listView.setAdapter(arrayAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            arrayAdapter.remove(list.get(position));
            if(!isFirstTime[0]){
                arrayAdapter.insert(lastPressed.get(1), new Integer(lastPressed.get(0)));
            } else {
                isFirstTime[0] = false;
            }


            String selected = ((TextView) view.findViewById(R.id.tv)).getText().toString();
            lastPressed.set(0, String.valueOf(position));
            lastPressed.set(1, selected);


            arrayAdapter.notifyDataSetChanged();
        }
    });

}