我试图使用ArrayAdapter将从json数组中检索到的数据显示到我的gridview中,但每当我尝试下面的代码时,它会出现错误java.lang.NullPointerException:尝试调用虚方法'void android.widget.ArrayAdapter .add(java.lang.Object)'在null对象引用上,所以请告诉我我做错了什么
EmojiAdapter.java
public class EmojiAdapter extends ArrayAdapter<EmojiModel> {
private Context mContext;
Typeface typeface;
ArrayList<EmojiModel> list;
public EmojiAdapter(@NonNull Context context, int resource) {
super(context, resource);
}
@Override
public int getCount() {
return list.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater =
(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.smiles_items_layout, null);
ImageView imageView =
(ImageView)convertView.findViewById(R.id.smile_image_view);
imageView.setImageResource(Integer.parseInt(list.get(position)
.getEmojiFile()));
return convertView;
}
}
StreamActivity.java
Communicator.getInstance().on("subscribe start", new Emitter.Listener() {
@Override
public void call(Object... args) {
try{
JSONDictionary response = (JSONDictionary) args[0];
String str = response.get("emojiPack").toString();
JSONArray emojies = new JSONArray(str);
for(int i=0;i<emojies.length();i++)
{
JSONObject response2 = (JSONObject)
emojies.getJSONObject(i);
EmojiModel toAdd = new EmojiModel((String)
response2.get("urlFile"));
JSONDictionary t =
JSONDictionary.fromString(response2.toString());
toAdd.init(t);
//The error appears from the below code
emojiAdapter.add(toAdd);
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
您似乎忘记了初始化ArrayList<EmojiModel> list
。在构造函数中添加初始化:
public EmojiAdapter(@NonNull Context context, int resource) {
super(context, resource);
list = new ArrayList<EmojiModel>();
}
另外当你的emojiAdapter.add(toAdd);调用变量 emojiAdapter
为空。
尝试回溯该变量初始化并初始化的位置,从Activity / Fragment传递变量时可能会出现问题。
答案 1 :(得分:0)
Private Sub OKCommandButton_Click()
With Me
Cells(.Tag, 1).Value = TextBox1.Value
Cells(.Tag, 2).Value = TextBox2.Value
Cells(.Tag, 3).Value = TextBox3.Value
End With
Unload UserForm1
End Sub
您正在获取Null指针异常,因为在适配器中您的列表未初始化。您已经通过构造函数将活动列表发送到适配器,并将初始化设置为此ArrayList<EmojiModel> list;
public EmojiAdapter(@NonNull Context context, int resource,ArrayList<EmojiModel> list) {
super(context, resource);
this.list=list;
this.mContext=context;
}
,并且您的上下文之类的任何其他变量也未初始化,请使用this.list=list;