2017-02-20 9 views
0

Как мы устанавливаем «Выбрать» (значение по умолчанию) в счетчике в качестве первого значения? Я просмотрел здесь и не нашел четкого решения или не понял их. Я вставляю свой пример кода ниже. Пожалуйста, предложите решение или объяснение, основанное на том же, для моего понимания. Благодаря !Установите значение по умолчанию в spinner как «Выбрать»

Это мой 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); 
} 
} 

Моя строка Рез массив:

<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> 
+0

добавить «Выбрать» в качестве первого элемента в массиве –

+0

спасибо, я подумал об этом раньше, но думал, что может быть лучший способ? может ли он каким-то образом обрабатываться с помощью метода setSelection()? Если да, то как можно обрабатывать setSelection()? – user3755885

+0

set selection() используется для установки выбранного по умолчанию элемента путем передачи позиции элемента ... так что для этого должен быть ваш элемент в списке. –

ответ

0

Добавить "Выберите" в качестве первого пункта титры и в вашем CustomAdapter, если позиция строки равна 0, тогда установите только holder.tv_Titles.setText(titles[position]); и сделайте visibilit y от older.img_Icon и holder.tv_Desc до GONE. При щелчке любого элемента счетчика проверьте, что позиция щелкнутого элемента равна 0 или нет. Если он равен 0, то покажите ошибку или проигнорируйте.

+0

Спасибо за предложения! – user3755885

Смежные вопросы