1

次のコードがうまくいかない理由を知りたいです。

  @Override
public void onUpdateView(View view, int position, NewsItemNormal data) {
    ImageView image = ViewUtils.findView(view, R.id.newslist_normal_image);
    TextView titleText = ViewUtils.findView(view, R.id.newslist_normal_title_text);
    TextView timeText = ViewUtils.findView(view, R.id.newslist_normal_time_text);
}

onUpdateView() は getView() のメソッドで、getView() が convertView を取得した後に呼び出されます。私のリストビューには 2 つのヘッダービューとリストビュー項目があり、ヘッダービューの 1 つはビューページャーです。データ ソースを更新すると、この onUpdateView のイメージとタイトルテキストとtimeText は null を返します。デバッグして、getView() からの onUpdateView reveived ' view ' 投稿がアイテムのビューではなくヘッダービューであることを発見しました。理由はわかりません。Android で 2 年間働いていましたが、listview でアダプターを使用する方法を知っていました。よろしくお願いします。

4

2 に答える 2

1

次のコードはうまく機能します。

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    if (null == convertView || !(convertView.getTag(R.id.tag_holder_default) instanceof ViewHolder)) {
        holder = new ViewHolder();
        convertView.setTag(R.id.tag_holder_default, holder);
    } else {
        holder = (ViewHolder) convertView.getTag(R.id.tag_holder_default);
    }
    return convertView;
}

に注意して(convertView.getTag(R.id.tag_holder_default) instanceof ViewHolderください。

于 2013-09-17T01:02:38.360 に答える