【问题标题】:Set default value in spinner as "Select"将微调器中的默认值设置为“选择”
【发布时间】:2017-02-20 17:09:39
【问题描述】:

我们如何将微调器中的“选择”(默认值)设置为第一个值?我浏览过这里,并没有找到任何明确的解决方案或没有理解它们。我在下面粘贴我的示例代码。请根据我的理解提出解决方案或解释。谢谢!

这是我的 MainActivity :

int[] icons = new int[]{R.drawable.bike, R.drawable.briefcase,
        R.drawable.butterfly, R.drawable.coffee, R.drawable.home, R.drawable.kids, R.drawable.monitoring};

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_page2);
    spinner = (Spinner) findViewById(R.id.spinner1);
    CustomAdapter customAdapter = new CustomAdapter(this, getResources().getStringArray(R.array.titles),
            getResources().getStringArray(R.array.description), icons);
    spinner.setAdapter(customAdapter);
   }

这是我下面的适配器

public class CustomAdapter  extends ArrayAdapter<String>{

Context c;
String [] titles;
String [] desc;
int [] icons;
public CustomAdapter(Context context, String[] titles, String [] desc, int [] imgs) {
    super(context, R.layout.layout_row, R.id.titles, titles);
    this.c = context;
    this.titles = titles;
    this.desc = desc;
    this.icons = imgs;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    MyViewHolder holder = null;
    if(row == null){
        LayoutInflater inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.layout_row, parent, false);
        holder = new MyViewHolder(row);
        row.setTag(holder);
    }else {
        holder = (MyViewHolder) row.getTag();
    }
    holder.img_Icon.setImageResource(icons[position]);
    holder.tv_Titles.setText(titles[position]);
    holder.tv_Desc.setText(desc[position]);
    return row;
}
}

class MyViewHolder{
TextView tv_Titles;
TextView tv_Desc;
ImageView img_Icon;
public MyViewHolder(View v) {
    tv_Titles = (TextView) v.findViewById(R.id.titles);
    tv_Desc= (TextView) v.findViewById(R.id.desc);
    img_Icon = (ImageView) v.findViewById(R.id.icons);
}
}

我的字符串数组 res :

<string-array name="titles">
    <item>Sunday</item>
    <item>Monday</item>
    <item>Tuesday</item>
    <item>Wednesday</item>
    <item>Thursday</item>
    <item>Friday</item>
    <item>Saturday</item>
</string-array>

<string-array name="description">
    <item>This is Sunday</item>
    <item>This is Monday</item>
    <item>This is Tuesday</item>
    <item>This is Wednesday</item>
    <item>This is Thursday</item>
    <item>This is Friday</item>
    <item>This is Saturday</item>
</string-array>

【问题讨论】:

  • 添加“Select”作为数组的第一项
  • 谢谢,我之前已经想通了,但认为可能有更好的方法吗?可以使用 setSelection() 方法以某种方式处理它吗?如果是这样,如何处理 setSelection() ?
  • set selection() 用于通过传递项目的位置来设置默认选中的项目......所以你的项目应该在列表中。

标签: java android arraylist spinner android-arrayadapter


【解决方案1】:

如果行位置为 0,则将“Select”作为第一项添加到标题数组和 CustomAdapter 中,然后仅设置 holder.tv_Titles.setText(titles[position]); 并将 older.img_Iconholder.tv_Desc 的可见性设置为 GONE。单击任何微调器项目时,检查单击的项目位置是否为 0。如果为 0 则显示错误或忽略。

【讨论】:

  • 感谢您的建议!
猜你喜欢
  • 2015-08-18
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
相关资源
最近更新 更多