Android 具有ArrayaAdapter的毕加索

Android 具有ArrayaAdapter的毕加索,android,android-arrayadapter,picasso,Android,Android Arrayadapter,Picasso,我只想从使用ArrayAdapter使用毕加索加载一幅图片开始。 我想我错过了一些次要的东西(希望如此)。只是想知道是否有人能给我指出正确的方向。我得到一个空指针异常 这是MainActivity源代码: public class MainActivity extends AppCompatActivity { ListView listView; ArrayList<DataModel> dataModel; @Override protected void onCreate(

我只想从使用ArrayAdapter使用毕加索加载一幅图片开始。 我想我错过了一些次要的东西(希望如此)。只是想知道是否有人能给我指出正确的方向。我得到一个空指针异常

这是MainActivity源代码:

public class MainActivity extends AppCompatActivity {

ListView listView;
ArrayList<DataModel> dataModel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    listView = (ListView) findViewById(R.id.listView);
    MyAdapter adapter = new MyAdapter(this, R.layout.datamodel, dataModel);
    listView.setAdapter(adapter);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(android.view.View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

问题在于适配器的参数
列表对象
。超类在不检查null值的情况下解除对它的保护。初始化它将修复您的
NPE
,但当然,只有在您没有向它提供您获得NPE的字符串中的一些数据之前,才会调用getView?您需要发布错误消息。此外,您的代码似乎令人困惑。您正在通过未使用的构造函数(如resource和objectsok)将变量传递到适配器中。我最初想使用多个图像。我们将于明天进一步调查此事。
public class MyAdapter extends ArrayAdapter<DataModel> {

Context context;

public MyAdapter(Context context, int resource, List<DataModel> objects) {
    super(context, resource, objects);
    this.context = context;
}

private class ViewHolder {
    //Create Holder to contain inflated xml file elements//
    ImageView imageView;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder = null;
    DataModel dataModel = getItem(position);

    LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

    if (convertView == null) {
        convertView = layoutInflater.inflate(R.layout.datamodel, null);
        holder = new ViewHolder();
        holder.imageView = (ImageView) convertView.findViewById(R.id.iconView);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    Picasso
            .with(context)
            .load("http://i.imgur.com/DvpvklR.png")
            .into(holder.imageView);

    return convertView;
}
public class DataModel {
    int iconId;

    public DataModel(int iconId) {
        this.iconId = iconId;
    }

    public int getIconId() {
        return iconId;
    }

    public void setIconId(int iconId) {
        this.iconId = iconId;
    }
}