我正在尝试使用url从json获取数据。 json没有问题。 这是json网址,我得到了空点异常错误。 我猜问题出在我的getData()函数上。

我尝试使用硬编码的值,但效果很好。

public class search_fragment extends Fragment {

String url;

String[] salonName;

String[] salonType;

String[] city;

String[] image;

//String[] salonName ={"A salon", "B salon"};

//String[] salonType = {"Female", "Female"};

//String[] city = {"Colombo", "KAndy"};

ListView lst;

View view;

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable

ViewGroup container, @Nullable Bundle savedInstanceState) {

view = inflater.inflate(R.layout.fragment_search, container, false);

lst = view.findViewById(R.id.salonList);

ListViewAdapter listViewAdapter = new ListViewAdapter(getActivity(),

salonName, salonType, city, image);

lst.setAdapter(listViewAdapter);

return view;

}

@Override

public void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getData();

}

void getData(){

RequestQueue requestQueue = Volley.newRequestQueue(getContext());

url = "https://newswiftsalon.000webhostapp.com/Salon.php";

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url, new

Response.Listener() {

@Override

public void onResponse(JSONArray response) {

int length = response.length();

salonName = new String[length];

salonType = new String[length];

city = new String[length];

image = new String[length];

for(int i = 0; i< response.length(); i++){

try{

JSONObject salons = response.getJSONObject(i);

salonName[i] = salons.getString("salonName");

salonType[i] = salons.getString("salonType");

city[i] = salons.getString("City");

image[i] = salons.getString("image");

} catch (JSONException e){

e.printStackTrace();

}

}

Log.d("salon Name", salonName[1]);

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

}

});

requestQueue.add(jsonArrayRequest);

}

}

转接器类别

public class ListViewAdapter extends ArrayAdapter {

private String[] salonName;

private String[] salonType;

private String[] city;

private String[] image;

private Activity context;

public ListViewAdapter(Activity context , String[] salonName, String[]

salonType, String[] city, String[] image ){

super(context, R.layout.salon_list, salonName);

this.context = context;

this.salonName = salonName;

this.salonType = salonType;

this.city = city;

this.image = image;

}

@NonNull

@Override

public View getView(int position, @Nullable View convertView, @NonNull

ViewGroup parent) {

View r = convertView;

ViewHolder viewHolder = null;

if(r==null){

LayoutInflater layoutInflater = context.getLayoutInflater();

r=layoutInflater.inflate(R.layout.salon_list, null, true);

viewHolder=new ViewHolder(r);

r.setTag(viewHolder);

}

else {

viewHolder =(ViewHolder) r.getTag();

}

viewHolder.txtType.setText(salonType[position]);

viewHolder.txtSalonName.setText(salonName[position]);

viewHolder.txtCity.setText(city[position]);

return r;

}

class ViewHolder

{

TextView txtType;

TextView txtSalonName;

TextView txtCity;

ImageView imageview;

ViewHolder(View v){

txtCity = v.findViewById(R.id.txt_city);

txtSalonName = v.findViewById(R.id.txt_salon_name);

txtType = v.findViewById(R.id.txt_type);

imageview = v.findViewById(R.id.img_salon);

}

}

}

这是错误

E/AndroidRuntime: FATAL EXCEPTION: main

Process: lk.nibm.swiftsalon, PID: 3485

java.lang.NullPointerException

at java.util.Objects.requireNonNull(Objects.java:203)

at java.util.Arrays$ArrayList.(Arrays.java:3738)

at java.util.Arrays.asList(Arrays.java:3725)

at android.widget.ArrayAdapter.(ArrayAdapter.java:168)

at lk.nibm.swiftsalon.ListViewAdapter.(ListViewAdapter.java:30)

at lk.nibm.swiftsalon.search_fragment.onCreateView(search_fragment.java:48)

at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)

at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)

at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)

at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)

at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)

at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)

at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)

at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)

at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)

at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)

at android.os.Handler.handleCallback(Handler.java:883)

at android.os.Handler.dispatchMessage(Handler.java:100)

at android.os.Looper.loop(Looper.java:214)

at android.app.ActivityThread.main(ActivityThread.java:7356)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐