2013-09-04 3 views
1

У меня чертовски время с помощью счетчика под PagerAdapter. Пожалуйста, ознакомьтесь с любыми предложениями, которые у вас могут быть. Я просто пень, может быть, слишком поздно ночью. Я попытался обернуть код в отдельный класс, а затем вызвать класс без успеха. Затем я понял, что мне нужно будет добавить getActivity() из Fragment, это тоже у меня возникли проблемы.Android Spinner issue - Конструктор ArrayAdapter <String> (NewSRO, int, String []) не определено

public class NewSRO extends PagerAdapter { 

    //---return the total number of pages--- 
    public int getCount() { 
     return 3; 
    } 

    public Object instantiateItem(View collection, int position) { 
     LayoutInflater inflater = (LayoutInflater) collection.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     int resId = 0; 
     View view = null; // setting view variable with null value 

     switch (position) { 
     case 0: 
      resId = R.layout.new_client_1; 
      view = inflater.inflate(resId, null); // inflating view to attach spinner data 
      final Spinner s1_clients; 
      final String[] clients = { 
        "client1", 
        "client2", 
        "3", 
        "4" 
        }; 
       //---Spinner View--- 
       s1_clients = (Spinner) view.findViewById(R.id.spinner_client_select); 
       SpinnerAdapter new_adapter = new ArrayAdapter<String>(
         NewSRO.this, 
         android.R.layout.simple_spinner_item, 
         clients);   
       s1_clients.setAdapter(new_adapter); 
       s1_clients.setOnItemSelectedListener(new OnItemSelectedListener() { 
        public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
         int index = s1_clients.getSelectedItemPosition(); Toast.makeText(null, "You have selected item : " + clients[index], 
          Toast.LENGTH_SHORT).show(); 
        } 
        public void onNothingSelected(AdapterView<?> arg0) { 
        } 
       }); 


      break; 
     case 1: 
      resId = R.layout.new_client_1; 
      break; 
     case 2: 
      resId = R.layout.new_client_1; 
      break; 
     } 

     //View view = inflater.inflate(resId, null); 
     ((ViewPager) collection).addView(view, 0); 
     return view; 
    } 

    @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
     ((ViewPager) arg0).removeView((View) arg2); 
    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     return arg0 == ((View) arg1); 
    } 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 
} 
+1

Что произошло, когда вы изменили '' NewSRO.this' с getActivity() '? – TronicZomB

+0

используйте 'ActivityName.this' вместо' NewSRO.this' или используйте этот 'collection.getContext()' coz, вы используете то же самое для инициализации вашего LayoutInflater – Raghunandan

+0

Спасибо Рагхунандан, что, похоже, заставило меня пройти начальную ошибку. Однако теперь я запускаю «NullPointerException» с помощью instantiationItem для s1_clients.setAdapter (new_adapter); – Brandy

ответ

1

Сначала казалось, что добавление collection.getContext() было в правильном направлении. Хотя, это просто заставило меня перестать обращать внимание на завышенный вид, который был в конечном счете проблемой. Каждому описанию дела требовалось раздутие, без которого приложение рухнуло бы.

В принципе мне нужно было добавить следующие строки в каждом случае заявление:

view = inflater.inflate(resId, null); 

Тогда мне нужно изменить мой SpinnerAdapter с view.getContext():

SpinnerAdapter new_adapter = new ArrayAdapter<String>(
        view.getContext(), 
        android.R.layout.simple_spinner_item, 
        clients);  

Я надеюсь, что это поможет кому-то еще поскольку viewPager - отличный способ улучшить ваш пользовательский интерфейс.

Приветствия, Brandy Lee Камачо

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