2014-09-20 4 views
1

у меня есть этот класс, который расширяет BaseAdapter, что я использую для вставки icon и textView для каждой строки в listView, который находится внутри ящикаGetView не называется на классе baseAdapter

public class NavRightDrawerListAdapter extends BaseAdapter { 

    private Context context; 
    LinkedList<String> userNameUsedForListView; 
    Map<String, Bitmap> urlUserImage; 

    public NavRightDrawerListAdapter(Context context, LinkedList<String> userNameUsedForListView, Map<String, Bitmap> returnBitMapFromURL) { 
     this.context = context; 
     this.userNameUsedForListView = userNameUsedForListView; 
     this.urlUserImage = returnBitMapFromURL; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     int count = 0; 
     if (convertView == null) { 
      LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      convertView = mInflater.inflate(R.layout.drawer_list_of_action, null); 
     } 

     ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon); 
     TextView txtTitle = (TextView) convertView.findViewById(R.id.title); 

     imgIcon.setImageBitmap(urlUserImage.get(userNameUsedForListView.get(count))); 
     txtTitle.setText(userNameUsedForListView.get(count)); 
     count++; 
     return convertView; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 
} 

и в моей деятельности я делать это:

[...] 
rightDrawerLinearLayout = (LinearLayout) findViewById(R.id.right_drawer_ll); 
rightDrawerListForFollow = (ListView) findViewById(R.id.right_drawer); 
NavRightDrawerListAdapter adapter = new NavRightDrawerListAdapter(getApplicationContext(), userNameUsedForListView,returnBitMapFromURL); 
rightDrawerListForFollow.setAdapter(adapter); 
[...] 

Я заметил, что getView не называется, кто-то может объяснить мне, почему?

спасибо большое.

+0

Я предполагаю, что, поскольку ваш адаптер утверждает, что он пуст (getCount возвращает 0), ListView не беспокоится о том, чтобы запрашивать представления элементов –

+0

ну, я должен вернуть размер моего lsit, используемого адаптером? я не могу оставить его 0? –

ответ

6

В вашем методе

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

вы возвращаете 0. так что ваш метод не называется. Вместо этого верните размер своего списка в метод getCount.

+0

спасибо за ответ, так называется getCount в первую очередь? и getView? –

+1

Да, ваш метод getCount() вызывается первым, а затем ваш getView() вызывается столько раз, сколько вы возвращаете значение счетчика. – Beena

1

Это уже ответили здесь:

Custom adapter getview is not called

Ваш метод GetCount возвращается 0, поэтому нет необходимости в адаптере не называть GetView().

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