У меня проблема с выбором значения для счетчика. вот мой код и адаптер.
Слушатель событий Spinner
category = (Spinner) findViewById(R.id.Spinner);
category.setPrompt("Select Category..");
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("Category", "Choose a Category");
list.add(map);
map = new HashMap<String, Object>();
map.put("Icon", R.drawable.icon1);
map.put("Category", "Category1");
list.add(map);
map = new HashMap<String, Object>();
map.put("Icon", R.drawable.icon2);
map.put("Category", "Category2");
list.add(map);
map = new HashMap<String,Object>();
map.put("Icon", R.drawable.icon3);
map.put("Category", "Category3");
list.add(map);
CategoryAdapter adapter = new CategoryAdapter(v.getContext(), list,R.layout.list_layout, new String[] { "Category", "Icon" }, new int[] { R.id.category, R.id.icon });
category.setAdapter(adapter);
category.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0,View v, int arg2,long arg3) {
// TODO Auto-generated method stub
String selected = category.getSelectedItem().toString();
//String selected = category.getTag().toString();
try{
//String selected = category.getSelectedItem().toString();
//Object selected = arg0.getTag();
//Toast.makeText(getApplicationContext(), String.valueOf(selected), Toast.LENGTH_SHORT).show();
if(selected.toString().equals("Category1")){
String msg1 = "Category1 type selected";
Toast.makeText(getApplicationContext(), msg1 + " " + selected, Toast.LENGTH_SHORT).show();
}else if(selected.toString().equals("Category2")){
String msg2 = "Category2 type selected";
Toast.makeText(getApplicationContext(), msg2 + " " + selected, Toast.LENGTH_SHORT).show();
}else if(selected.toString().equals("Category3")){
String msg3 = "Category3 type selected";
Toast.makeText(getApplicationContext(), msg3 + " " + selected, Toast.LENGTH_SHORT).show();
}
}catch(Exception e){
Toast.makeText(getApplicationContext(),"Error occured " + e.getName().getClass(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(
AdapterView<?> arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "nothing selected", Toast.LENGTH_SHORT).show();
}
});
КатегорияАдаптер
public class ReminderCategoryAdapter extends SimpleAdapter{
Context c;
public ReminderCategoryAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
c = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater li = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(R.layout.list_layout,null);
}
HashMap<String, Object> data = (HashMap<String, Object>) getItem(position);
((TextView) convertView.findViewById(R.id.category)).setText((String) data.get("Category"));
((TextView) convertView.findViewById(R.id.category)).setTag((Object) data.get("Category"));
return convertView;
}
}
для моего спиннера, в адаптере, я надуваю изображение + текст, мой спиннер работает найти, при этом я иллюстрирую свой спиннер
============================
|Значок1 Текст1 |
|Значок2 Текст2 |
|Значок3 Текст3 |
но как только я попытаюсь использовать onitemselectedlistener и использовать метод getSelectedItem().toString() и поджарить его, значение, возвращаемое всплывающим уведомлением, представляет собой комбинацию значка и текста, я не хочу, чтобы значение значка было возвращено, но Мне просто нужна только строка или текст. Я пытаюсь использовать метод setTag (значение объекта), используя ((TextView) convertView.findViewById (R.id.category)).setTag((Object) data.get("Category")); в адаптере, а при использовании метода getTag() в прослушивателе возникало исключение нулевого указателя. Вместо использования метода getItemPosition(position) или getSelectedItem() существует ли какое-либо другое решение для получения и управления строковым значением для выбранного элемента? Пожалуйста помоги.