Android 具有ArrayaAdapter的毕加索
我只想从使用ArrayAdapter使用毕加索加载一幅图片开始。 我想我错过了一些次要的东西(希望如此)。只是想知道是否有人能给我指出正确的方向。我得到一个空指针异常 这是MainActivity源代码: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(
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;
}
}