2015-04-27 4 views
-1

Я разрабатываю приложение для Android, где у меня есть ListView в DrawerLayout, заполненном обычным ListAdapter. ListView никогда не заполняется ... Я не могу понять, почему ... Вот установка адаптера к ListView:ListView не заполнен ListAdapter

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_parent); 
    sideMenuLayout = (DrawerLayout) findViewById(R.id.drawer_base_activity_layout); 
    menuItemListView = (ListView) findViewById(R.id.sideMenuList); 

    //Pour les tests afin d'ignorer les certifications SSL 
    try { 
     Tools.skipSslCert(); 

    } catch (KeyManagementException | NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 

    PsCategoriesServices categoriesServices = new PsCategoriesServices(); 
    categoriesServices.getAllCategories(new OnCategoriesServicesListener(){ 

     @Override 
     public void OnResponse(ArrayList<Categorie> listCategories) { 
      for(int catNb = 0; catNb < listCategories.size();catNb++) 
      { 
       if(listCategories.get(catNb).getNiveauHierarchique() == FIRST_CATEGORIES_ID) 
       { 
        menuItems.add(new SideMenuItem(listCategories.get(catNb))); 
       } 
      } 
      menuAdapter = new MenuListAdapter(getApplicationContext(), menuItems); 
      menuItemListView.setAdapter(menuAdapter); 
     } 

     @Override 
     public void OnError(VolleyError error) { 
      // TODO Auto-generated method stub 

     } 
    }); 
} 

Я получаю данные из метода OnResponse.

Вот адаптер:

public class MenuListAdapter extends ArrayAdapter<SideMenuItem> { 

    private Context mContext; 
    private ArrayList<SideMenuItem> navDrawerItems; 

    public MenuListAdapter(Context context, ArrayList<SideMenuItem> navDrawerItemsList){ 
     super(context, 0, navDrawerItemsList); 
     mContext = context; 
     navDrawerItems = navDrawerItemsList; 
    } 


    @Override 
    public int getCount() { 
     return navDrawerItems.size(); 
    } 

    @Override 
    public SideMenuItem getItem(int position) {  
     return navDrawerItems.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     SideMenuItem menuItemtitle = getItem(position); 
     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.menu_item_layout, parent, false); 
     } 

     TextView menuItemTitle = (TextView) convertView.findViewById(R.id.menuItemLink); 
     menuItemTitle.setText(menuItemtitle.getTitle().toString()); 

     return convertView; 
    } 
} 

У меня есть переопределить все методы адаптера, значения не нуль ... метод GetView никогда не вызывается ... Пожалуйста, помогите !! Заранее спасибо !

+0

Я не понимаю, что вы используете setText() в поле адаптера. Вы устанавливаете его из самого текстового поля? – Prakhar

+0

th setText() используется для установки текстового значения элемента ListView. Метод getView даже не достигнут ... –

ответ

0

попробовать этот метод GetView() .. Это должно работать:

@override 
    public View getView(final int position, View convertView, ViewGroup 
    parent) 
{ 

    LayoutInflater inflater = (LayoutInflater) 
    context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View v = inflater.inflate(R.layout.menu_item_layout,parent, false); 

    // do the code here... 

    return v; 
} 

По крайней мере, ваш GetView() mehod будет работать, я думаю.

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