2017-09-04 22 views
0

エラーはありませんが、ListViewは空です。私は、私のArrayList内のアイテムの正しい数を返すgetCount()を実装しました。リストビューは可視です。 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);が実行されることはありませんので、これがあると讲义1コースの、RecyclerViewに切り替えてくださいimmediatelly mListView.setAdapter(mNewsAdapter);

0

ListViewが古い呼び出した後mNewsAdapter.notifyDataSetChanged();をコールする必要はありません。

関連する問題