微调框-如何将用户的选择放在首位

凯西

我想知道是否有人可以帮助我编写代码。我有一个微调器,它在一个数组中包含六个项目,第三个项目设置为默认值。当用户选择一个项目时,我希望用户的选择移至微调器的顶部位置。为了澄清,如果我有项目A,B,C,D,E和F:

默认:

C

--

A

B

D

E

F

如果用户选择D:

D

--

A

B

C

E

F

如“图表”所示,我还试图弄清楚如何仅在最上面的选择上放置分隔线。

这是我到目前为止的代码。我刚刚开始学习Android,所以我对所有事情都比较怀疑,但是对您有所帮助,谢谢!

-更新的代码-

public class Test extends AppCompatActivity implements OnItemSelectedListener {

List<String> list;
String [] objects = {"A","B","C","D","E","F"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
        android.R.layout.simple_spinner_item, objects);

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    spinner.setOnItemSelectedListener(this);
    list = new ArrayList<>(Arrays.asList(objects));

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

    spinner.setAdapter(adapter);
    spinner.setSelection(2);

    adapter.notifyDataSetChanged();
}
public void onItemSelected(AdapterView<?> parent, View view,
                           int pos, long id) {
    list.remove(pos);
    objects=list.toArray(new String[0]);
    adapter.notifyDataSetChanged();
}

public void onNothingSelected(AdapterView<?> parent) {

}
米兰娜·伊塔妮(Miriana Itani)

首先要获得所需的布局,您必须具有一个自定义适配器。

因此,您需要定义一个类,如下所示:

public class MyAdapter extends ArrayAdapter<String>{
   Context c;
String [] objects;
   public MyAdapter(Context c, String [] objects){
          this.c=c;
this.objects=objects;
   }


    @Override 
   public View getDropDownView(int position, View cnvtView, ViewGroup prnt) { 
    return getCustomView(position, cnvtView, prnt);
 } 
    @Override 
     public View getView(int pos, View cnvtView, ViewGroup prnt) { 
return getCustomView(pos, cnvtView, prnt); 
           }
        }

public View getCustomView(int position, View convertView, ViewGroup parent) 

{ 
LayoutInflater inflater = getLayoutInflater(); 
View mySpinner = inflater.inflate(R.layout.custom_spinner, parent, false); 
RelativeLayout layout= (RelativeLayout) mySpinner.findViewById(R.id.layout);
TextView letter= (TextView) mySpinner.findViewById(R.id.letter);
 letter.setText(objects[position]);
 if(position==0){
 layout.setVisibility(true);
 }
return mySpinner;
}

至于是custom_spinner.xml的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"
    >
<TextView
android:id="@+id/letter"
android:height="wrap_content"
android:width="wrap_content"/>
<RelativeLayout
android:id="@+id/layout"
android:visibility="gone"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<View 
android:id="@+id/line"
android:height="1dp"
android:width="5dp"/>
<View
android:layout_toRightOf="@+id/line"
    android:height="1dp"
android:width="5dp"/>
        </RelativeLayout>
</RelativeLayout>

然后在您的活动中:

MyAdapter adapter= new MyAdapter(this, spinnerValues);
mySpinner.setAdapter(adapter);

至于从下拉列表中删除所选项目:

您必须在活动中具有以下内容:

List<String> list;
String [] objects;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);

Spinner spinner = (Spinner) findViewById(R.id.spinnerTime);
spinner.setOnItemSelectedListener(this);
objects= {"A","B","C","D","E","F"};
list = new ArrayList<>(Arrays.asList(objects));
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        objects, android.R.layout.simple_spinner_item);

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

spinner.setAdapter(adapter);
spinner.setSelection(2);

adapter.notifyDataSetChanged();
 }
public void onItemSelected(AdapterView<?> parent, View view,
                           int pos, long id) {
  list = new ArrayList<>(Arrays.asList(R.array.time_period));
  list.remove(pos);
  objects=list.toArray(new String[0]);
adapter.notifyDataSetChanged();
 }

public void onNothingSelected(AdapterView<?> parent) {

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中选择微调框

来自分类Dev

如何删除微调框边框?

来自分类Dev

如何删除微调框边框?

来自分类Dev

从特定主题中选择微调框

来自分类Dev

根据微调框的选择启动不同的活动

来自分类Dev

根据微调框的选择更改Android Tab

来自分类Dev

微调框不可选择

来自分类Dev

如何更改微调框的下拉列表颜色

来自分类Dev

如何删除微调框的阴影DropDownView

来自分类Dev

在请求期间如何显示微调框?

来自分类Dev

在请求期间如何显示微调框?

来自分类Dev

如何隐藏微调框的选定项目

来自分类Dev

如何设置微调框的“提示文字”?

来自分类Dev

如何根据在edittext框中输入的文本隐藏微调框?

来自分类Dev

如何将默认文本设置为微调框

来自分类Dev

如何根据微调框的选择在edittext中设置值?

来自分类Dev

刷新后如何使微调框显示先前选择的项目?

来自分类Dev

选择微调框项目时不显示弹出窗口?

来自分类Dev

微调框未选择第一项

来自分类Dev

选择一个微调框会引发IndexOutOfBoundsException吗?

来自分类Dev

微调框未选择第一项

来自分类Dev

选择之前微调框元素未显示正确的视图

来自分类Dev

如何设置微调框的下拉列表的最大长度?

来自分类Dev

如何动态添加微调框(通过按按钮)?

来自分类Dev

微调框-如何在下拉列表周围设置边框?

来自分类Dev

如何使禁用的微调框看起来不禁用?

来自分类Dev

如何检测微调框是否在Android上单击打开

来自分类Dev

当我在线检查主机时如何显示微调框?

来自分类Dev

如何仅在数据之前加载微调框