qq_28360295 2016-11-03 12:39 采纳率: 0%
浏览 807

android gridview 空指针

vh.imageViewvh.setImageResource(getItem(i).dataicon);//这两句提示有空指针
vh.textViewvh.setText(getItem(i).dataName);
package com.zhangyi.zyapp26_27;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewSwitcher;

import java.util.ArrayList;

/**

  • Created by me on 2016-11-3. */

public class BViewSwitcher extends Activity {

public static final int NUMBER_PER_SCREEN = 12;
public static class DataItem{
    public String dataName;
    public int dataicon;
}
static class ViewHolder{
    ImageView imageViewvh;
    TextView textViewvh;
}

private ArrayList<DataItem> items = new ArrayList<>();
private int screenNo = 1;
private int screenCount;
ViewSwitcher myviewswitcher;
LayoutInflater inflater;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.b_viewswitcher);

    inflater = LayoutInflater.from(BViewSwitcher.this);
    for (int i = 0; i < 40; i++) {
        String dataname ="";
        int drawable =0;
        DataItem item=new DataItem();
        switch ((int) (Math.random() * 3)) {
            case 0:dataname="Chrome "+i;drawable = R.mipmap.ic_launcher2;break;
            case 1:dataname="Picture "+i;drawable = R.mipmap.ic_launcher3;break;
            case 2:dataname="Shop "+i;drawable = R.mipmap.ic_launcher4;break;
        }
        item.dataName = dataname;
        item.dataicon = drawable;
        items.add(item);
    }
    screenCount = items.size() % NUMBER_PER_SCREEN == 0 ?
            items.size() / NUMBER_PER_SCREEN : items.size() / NUMBER_PER_SCREEN + 1;
    myviewswitcher = (ViewSwitcher) findViewById(R.id.myviewswitcher);
    myviewswitcher.setFactory(new ViewSwitcher.ViewFactory() {
        @Override
        public View makeView() {
            return inflater.inflate(R.layout.datagridview, null);
        }
    });
    next(null);
}

public void previous(View view) {
    if (screenNo > 1) {
        screenNo--;
        myviewswitcher.setInAnimation(this, R.anim.push_left_in);
        ((GridView) myviewswitcher.getNextView()).setAdapter(adapter);
        myviewswitcher.showPrevious();
    }
}

public void next(View view) {
    if (screenNo < screenCount) {
        screenNo++;
        myviewswitcher.setInAnimation(this, R.anim.push_right_in);
        ((GridView) myviewswitcher.getNextView()).setAdapter(adapter);
        myviewswitcher.showNext();
    }
}
private BaseAdapter adapter = new BaseAdapter() {
    @Override
    public int getCount() {
        if (screenNo == screenCount && items.size() % NUMBER_PER_SCREEN != 0) {
            return items.size() % NUMBER_PER_SCREEN;
        }
        return NUMBER_PER_SCREEN;
    }

    @Override
    public DataItem getItem(int i) {
        return items.get((screenNo - 1) * NUMBER_PER_SCREEN + i);
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View view1 = view;
        ViewHolder vh=new ViewHolder();
        ViewGroup viewGroup2=(ViewGroup) getLayoutInflater().inflate(R.layout.datagridview, null);
        vh.imageViewvh = (ImageView) viewGroup2.findViewById(R.id.imagedata);
        vh.textViewvh = (TextView) viewGroup2.findViewById(R.id.textdata);
        try {
            vh.imageViewvh.setImageResource(getItem(i).dataicon);//这两句提示有空指针
            vh.textViewvh.setText(getItem(i).dataName);
        } catch (Exception e) {
            e.printStackTrace();
        }

// ViewGroup parent1 = (ViewGroup) vh.imageViewvh.getParent();

// if (parent1 != null) {
// parent1.removeAllViews();
// }
//
// ViewGroup parent11 = (ViewGroup) vh.textViewvh.getParent();
// if (parent11 != null) {
// parent11.removeAllViews();
// }
// viewGroup2.addView(vh.imageViewvh);
// viewGroup2.addView(vh.textViewvh);

// if (view1 == null) {
// view1 = inflater.inflate(R.layout.datagridview, viewGroup,false);
// }
// ImageView imageView = (ImageView) viewGroup2.findViewById(R.id.imagedata);
// TextView textView = (TextView) viewGroup2.findViewById(R.id.textdata);
// try {
//
// imageView.setImageResource(getItem(i).dataicon);
// imageView.setImageResource(R.mipmap.ic_launcher2);
// textView.setText(getItem(i).dataName);
// }catch (Exception e){
// e.printStackTrace();
// }
return viewGroup2;
}
};
}

  • 写回答

2条回答

  • qq_31258245 2016-11-03 13:20
    关注

    你的ViewHolder里边的数据成员并没有实例化,当然会报错了。。

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?