2014-12-04 4 views
0

Im пытается добавить listview внутри фрагмента ведьмы также внутри табуста. приложение не сбой или что-то еще, но в представлении списка ничего не отображается. Вот мой код:Listview внутри фрагмента tabpager, не отображающего

Класс для tabPager

public class TabPagerAdapter extends FragmentPagerAdapter { 

    public TabPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int index) { 

     switch (index) { 
      case 0: 
       return new FragmentHome(); 
      case 1: 
       return new FragmentBadges(); 
      case 2: 
       return new FragmentBenefits(); 
     } 

     return null; 
    } 

Ниже приводится фрагмент, где я хочу ListView:

public class FragmentBadges extends Fragment { 

      @Override 
      public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) { 

       View rootView = inflater.inflate(R.layout.fragment_badges_list, null); 

       BadgesListAdapter adapter = new BadgesListAdapter(this.getActivity(), getCurrentBadges()); 
       ListView badgeslist = (ListView) rootView.findViewById(R.id.badges_list); 
       badgeslist.setAdapter(adapter); 
       badgeslist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
              int position, long id) { 
         //TODO do some 
        } 
       }); 

       return rootView; 
      } 

И следующее адаптер:

public class BadgesListAdapter extends ArrayAdapter<String> { 
    private final Activity context; 
    private List<Badge> badges; 

    public BadgesListAdapter(Activity context, List<Badge> badges) { 
     super(context, R.layout.fragment_badges_listrow); 
     this.context = context; 
     this.badges = badges; 
    } 

    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView= inflater.inflate(R.layout.fragment_badges_listrow, null, true); 

     TextView txtTitle = (TextView) rowView.findViewById(R.id.text); 

     ImageView imageView = (ImageView) rowView.findViewById(R.id.img); 

     txtTitle.setText(badges.get(position).getName()); 

     imageView.setImageResource(badges.get(position).getDrawableValue()); 

     return rowView; 
    } 

во время отладки Я узнал, что метод getView внутри badgesListAdap тер никогда не называется. У меня есть тот же код для другого приложения, но без табулятора, и там все работает отлично ...

ответ

0

Проверьте, не возвращает ли getCurrentBadges() метод пустой список. Если это так, в ListView нет данных.

+1

Уже проверить, у него есть много данных, чтобы показать. –

+0

Итак, попробуйте использовать 'ArrayAdapter (контекст контекста, int resource, T [] objects)' constructor, чтобы предоставить ваши данные, вызвав 'super (context, R.layout.fragment_badges_listrow, badges.toArray())' в 'BadgesListAdapter' конструктор. –

+2

Я меняю все на mach, что конструктор, но метод getView() он никогда не вызывает. –