2017-09-04 72 views
0

沒有錯誤,但ListView爲空。我已經實現了getCount(),它在我的ArrayList中返回正確數量的項目。 ListView是可見的 我已經在ListView上調用了setListAdapter,而xml是match_parent。BaseAdapter中的Android getView()未調用(但調用getCount())

這是我的片段。

mNewsList = infoBean.getNews(); 
     if (mNewsList != null) { 
      mNewsAdapter = new NewsAdapter(); 
      mListView.setAdapter(mNewsAdapter); 
      mNewsAdapter.notifyDataSetChanged(); 
     } 
    } else {//load more 
     List<HomeBean.NewsBean> news = infoBean.getNews(); 
     if (mNewsList != null) { 
      mNewsList.addAll(news); 
      mNewsAdapter.notifyDataSetChanged(); 
     } 

這是我的適配器:

private class NewsAdapter extends BaseAdapter { 

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

    @Override 
    public HomeBean.NewsBean getItem(int position) { 
     return mNewsList.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = View.inflate(MyApplication.getmContext(), R.layout.item_list, null); 

      holder = new ViewHolder(); 
      holder.ivIcon = convertView.findViewById(R.id.iv_item); 
      holder.tvTitle = convertView.findViewById(R.id.tv_item_list_title); 
      holder.content = convertView.findViewById(R.id.tv_item_list_content); 
      holder.tvTime = convertView.findViewById(R.id.tv_time); 
      holder.author = convertView.findViewById(R.id.tv_author); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.tvTitle.setText(getItem(position).getTitle()); 
     holder.content.setText(getItem(position).getContent()); 
     SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd"); 
     String itemTime = dataFormat.format(getItem(position).getCreate_at() * 1000); 
     holder.tvTime.setText(itemTime); 
     holder.author.setText(getItem(position).getSection_name()); 
     if (getItem(position).getCover_pic().startsWith("http:")) { 
      picUrl = getItem(position).getCover_pic(); 
     } else { 
      picUrl = RBConstants.SERVER_PIC + getItem(position).getCover_pic(); 
     } 
     HttpLoader.getInstance(MyApplication.getmContext()).display(holder.ivIcon, picUrl); 

     return convertView; 
    } 
} 

這是我的持有人。

class ViewHolder { 
    public ImageView ivIcon; 
    public TextView tvTitle; 
    public TextView tvTime; 
    public TextView content; 
    public TextView author; 
} 
+0

你確定'mNewsList'不是空的嗎?如果計數爲零,那麼適配器將不會調用'getView'方法。我想是這樣。 – theapache64

回答

0

這是因爲從不執行mListView.setAdapter(mNewsAdapter);和五言的,沒有必要調用mNewsAdapter.notifyDataSetChanged();調用mListView.setAdapter(mNewsAdapter);

相關問題