尝试在 json 中的空对象引用上调用虚方法 'void android.widget.TextView.setText(java.lang.CharSequence)'
Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference In json
我正在尝试从 json 文件调用 折扣价 和 折扣价。
Json内容为.
[
{
"Menu_ID":"63",
"Menu_name":"Who knows that he is hero? whole of product discre",
"Price":"1800",
"Discounted_Price":"180",
"Discounted_Value":"13",
"Menu_image":"upload\/images\/9489-2018-06-11.png"
},
{
"Menu_ID":"62",
"Menu_name":"Who knows that he is hero?",
"Price":"190",
"Discounted_Price":"90",
"Discounted_Value":"9",
"Menu_image":"upload\/images\/0459-2018-06-10.png"
}
]
我正在使用 recyclerview 来显示我应用中的所有内容。
Fragment 我在哪里实现 recyclerview
ArrayList<Double> Discounted_Price = new ArrayList<Double>();
ArrayList<String> Discounted_Value = new ArrayList<String>();
public void PrsJsonRea(JSONArray 数组){
for(int i = 0; i<array.length(); i++) {
SecondPojoListData getJsonRecAdap = new SecondPojoListData();
JSONObject json = null;
try {
json = array.getJSONObject(i);
getJsonRecAdap.setDiscPrice3(json.getString("Discounted_Price"));
getJsonRecAdap.setDiscValue3(json.getString("Discounted_Value"));
Menu_ID3.add(json.getLong("Menu_ID"));
// Adding image title name in array to display on RecyclerView click event.
Discounted_Value5.add(json.getString("Discounted_Value"));
Discounted_Price5.add(Double.valueOf(formatData.format(json.getDouble("Discounted_Price"))));
} catch (JSONException e) {
e.printStackTrace();
}
recDataAdap.add(getJsonRecAdap);
}
madap2 = new FrontHorizontalListAdapter(recDataAdap,getContext());
secondrecyclerView.setAdapter(madap2);
}
适配器class
@Override
public void onBindViewHolder(ViewHolder Viewholder, int position) {
SecondPojoListData dataAdapterOBJ = dataAdapters.get(position);
Viewholder.discountedvalue.setText(dataAdapterOBJ.getDiscValue3());
Viewholder.discountedprice.setText(dataAdapterOBJ.getDiscPrice3());
}
class ViewHolder 扩展 RecyclerView.ViewHolder{
public TextView discountedvalue, discountedprice;
public
public ViewHolder(View itemView) {
super(itemView);
discountedprice = (TextView) itemView.findViewById(R.id.DiscountPrice);
discountedvalue = (TextView) itemView.findViewById(R.id.DiscountValue);
Menuprice = (TextView) itemView.findViewById(R.id.itemprice);
}
}
xml布局
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="@color/secondary_text"
android:maxLines="1"
android:gravity="left|center_vertical"
android:id="@+id/DiscountValue"
android:padding="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="@color/secondary_text"
android:maxLines="1"
android:gravity="left|center_vertical"
android:id="@+id/DiscountPrice"
android:padding="5dp"/>
错误信息。
06-12 09:07:11.981 32633 32633 E AndroidRuntime java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
06-12 09:07:11.981 32633 32633 E AndroidRuntime at com.androbaron.ecommerce.adapters.FrontHorizontalListAdapter.onBindViewHolder(FrontHorizontalListAdapter.java:83)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at com.androbaron.ecommerce.adapters.FrontHorizontalListAdapter.onBindViewHolder(FrontHorizontalListAdapter.java)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
其他一切都完美接受折扣价和折扣价
有人帮我解决这个错误吗?
您的错误是 NullPointerException
,因为您的 ViewHolder
中引用的 TextView
之一为空。在创建 ViewHolder
时查看您正在膨胀的布局,了解为什么您的引用 ID 不在您绑定的 ItemView 中。
您尝试绑定到 Recyclerview 的视图似乎配置错误。请仔细检查您使用的布局是否已膨胀。如果您能上传适配器的完整内容,将会很有帮助 class.
我通过更改布局值解决了这个问题。
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View viewTWO = LayoutInflater.from(parent.getContext()).inflate(R.layout.first_cardview, parent, false);
ViewHolder rowTWO = new ViewHolder(viewTWO);
return rowTWO;
}
谢谢大家。
请键入 Cast Double 为字符串,例如..
Viewholder.discountedvalue.setText(String.valueOf(dataAdapterOBJ.getDiscValue3()));
我正在尝试从 json 文件调用 折扣价 和 折扣价。
Json内容为.
[
{
"Menu_ID":"63",
"Menu_name":"Who knows that he is hero? whole of product discre",
"Price":"1800",
"Discounted_Price":"180",
"Discounted_Value":"13",
"Menu_image":"upload\/images\/9489-2018-06-11.png"
},
{
"Menu_ID":"62",
"Menu_name":"Who knows that he is hero?",
"Price":"190",
"Discounted_Price":"90",
"Discounted_Value":"9",
"Menu_image":"upload\/images\/0459-2018-06-10.png"
}
]
我正在使用 recyclerview 来显示我应用中的所有内容。
Fragment 我在哪里实现 recyclerview
ArrayList<Double> Discounted_Price = new ArrayList<Double>();
ArrayList<String> Discounted_Value = new ArrayList<String>();
public void PrsJsonRea(JSONArray 数组){
for(int i = 0; i<array.length(); i++) {
SecondPojoListData getJsonRecAdap = new SecondPojoListData();
JSONObject json = null;
try {
json = array.getJSONObject(i);
getJsonRecAdap.setDiscPrice3(json.getString("Discounted_Price"));
getJsonRecAdap.setDiscValue3(json.getString("Discounted_Value"));
Menu_ID3.add(json.getLong("Menu_ID"));
// Adding image title name in array to display on RecyclerView click event.
Discounted_Value5.add(json.getString("Discounted_Value"));
Discounted_Price5.add(Double.valueOf(formatData.format(json.getDouble("Discounted_Price"))));
} catch (JSONException e) {
e.printStackTrace();
}
recDataAdap.add(getJsonRecAdap);
}
madap2 = new FrontHorizontalListAdapter(recDataAdap,getContext());
secondrecyclerView.setAdapter(madap2);
}
适配器class
@Override
public void onBindViewHolder(ViewHolder Viewholder, int position) {
SecondPojoListData dataAdapterOBJ = dataAdapters.get(position);
Viewholder.discountedvalue.setText(dataAdapterOBJ.getDiscValue3());
Viewholder.discountedprice.setText(dataAdapterOBJ.getDiscPrice3());
}
class ViewHolder 扩展 RecyclerView.ViewHolder{
public TextView discountedvalue, discountedprice;
public
public ViewHolder(View itemView) {
super(itemView);
discountedprice = (TextView) itemView.findViewById(R.id.DiscountPrice);
discountedvalue = (TextView) itemView.findViewById(R.id.DiscountValue);
Menuprice = (TextView) itemView.findViewById(R.id.itemprice);
}
}
xml布局
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="@color/secondary_text"
android:maxLines="1"
android:gravity="left|center_vertical"
android:id="@+id/DiscountValue"
android:padding="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="@color/secondary_text"
android:maxLines="1"
android:gravity="left|center_vertical"
android:id="@+id/DiscountPrice"
android:padding="5dp"/>
错误信息。
06-12 09:07:11.981 32633 32633 E AndroidRuntime java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
06-12 09:07:11.981 32633 32633 E AndroidRuntime at com.androbaron.ecommerce.adapters.FrontHorizontalListAdapter.onBindViewHolder(FrontHorizontalListAdapter.java:83)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at com.androbaron.ecommerce.adapters.FrontHorizontalListAdapter.onBindViewHolder(FrontHorizontalListAdapter.java)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363)
06-12 09:07:11.981 32633 32633 E AndroidRuntime at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
其他一切都完美接受折扣价和折扣价
有人帮我解决这个错误吗?
您的错误是 NullPointerException
,因为您的 ViewHolder
中引用的 TextView
之一为空。在创建 ViewHolder
时查看您正在膨胀的布局,了解为什么您的引用 ID 不在您绑定的 ItemView 中。
您尝试绑定到 Recyclerview 的视图似乎配置错误。请仔细检查您使用的布局是否已膨胀。如果您能上传适配器的完整内容,将会很有帮助 class.
我通过更改布局值解决了这个问题。
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View viewTWO = LayoutInflater.from(parent.getContext()).inflate(R.layout.first_cardview, parent, false);
ViewHolder rowTWO = new ViewHolder(viewTWO);
return rowTWO;
}
谢谢大家。
请键入 Cast Double 为字符串,例如..
Viewholder.discountedvalue.setText(String.valueOf(dataAdapterOBJ.getDiscValue3()));