Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段内的自定义列表不工作_Android_Nullpointerexception_Fragment - Fatal编程技术网

Android 片段内的自定义列表不工作

Android 片段内的自定义列表不工作,android,nullpointerexception,fragment,Android,Nullpointerexception,Fragment,我只是在一个片段中使用了一个自定义列表。我使用截图从api中检索了这些数据。它显示了以下错误。我正在想办法解决这个问题,有人能帮我吗 java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.toolbox.ImageLoader com.example.user.ekta.AppController.getImageLoader()' on a null object referen

我只是在一个片段中使用了一个自定义列表。我使用截图从api中检索了这些数据。它显示了以下错误。我正在想办法解决这个问题,有人能帮我吗

java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.toolbox.ImageLoader com.example.user.ekta.AppController.getImageLoader()' on a null object reference
                                                                           at com.example.user.ekta.MyBookAdapter.<init>(MyBookAdapter.java:25)
                                                                           at com.example.user.ekta.FullInfoTabFragment.onCreateView(FullInfoTabFragment.java:85).
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'com.android.volley.toolbox.ImageLoader com.example.user.ekta.AppController.getImageLoader()
位于com.example.user.ekta.MyBookAdapter.(MyBookAdapter.java:25)
在com.example.user.ekta.FullInfoTabFragment.onCreateView(FullInfoTabFragment.java:85)上。
这是我的片段类

package com.example.user.ekta;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonArrayRequest;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;


public class FullInfoTabFragment extends Fragment {

    private static final String EXTRA_SRORT_CARD_MODEL = "EXTRA_SRORT_CARD_MODEL";
    //    String transitionTag;
    private SportCardModel sportCardModel;
    private Toolbar toolbar;
    private ImageView ivPhoto;

    private static final String TAG = FullInfoTabFragment.class.getSimpleName();

    private static final String url = "http://myeducationhunt.com/public/schools";

    private ProgressDialog pDialog;
    private List<MyBook> ourBooksListItems = new ArrayList<MyBook>();
    private ListView listView;
    private MyBookAdapter adapter;


    public static FullInfoTabFragment newInstance(SportCardModel sportCardModel) {
        FullInfoTabFragment fragment = new FullInfoTabFragment();
        Bundle args = new Bundle();
        args.putParcelable(EXTRA_SRORT_CARD_MODEL, sportCardModel);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            sportCardModel = getArguments().getParcelable(EXTRA_SRORT_CARD_MODEL);
        }
        if (savedInstanceState != null) {
            sportCardModel = savedInstanceState.getParcelable(EXTRA_SRORT_CARD_MODEL);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_full_info, container, false);
        toolbar = (Toolbar) view.findViewById(R.id.toolbar);
        ivPhoto = (ImageView) view.findViewById(R.id.ivPhoto);

        listView = (ListView) view.findViewById(R.id.list);
        adapter = new MyBookAdapter(getActivity(), ourBooksListItems);
        listView.setAdapter(adapter);
        listView.setTextFilterEnabled(true);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

//                OurSchool ourSchool = new OurSchool();
//                Intent i = new Intent(getContext(), SchoolDetails.class);

//                i.putExtra("id", ourSchoolsListItems.get(position).schoolId);
//                i.putExtra("name", ourSchoolsListItems.get(position).schoolName);
//                i.putExtra("location", ourSchoolsListItems.get(position).schoolLocation);
//                i.putExtra("logo", ourSchoolsListItems.get(position).schoolLogo);
//                i.putExtra("email", ourSchoolsListItems.get(position).schoolEmail);
//                i.putExtra("website", ourSchoolsListItems.get(position).schoolWebsite);
//                i.putExtra("created_at", ourSchoolsListItems.get(position).createdAt);
//                i.putExtra("updated_at", ourSchoolsListItems.get(position).updatedAt);

//                startActivity(i);

            }
        });
        pDialog = new ProgressDialog(getActivity());
// Showing progress dialog before making http request
        pDialog.setMessage("Loading…");
        pDialog.show();

// Creating volley request obj
        JsonArrayRequest schoolRequest = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        pDialog.hide();

                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {

                                JSONObject obj = response.getJSONObject(i);
                                MyBook myBook = new MyBook();

                                myBook.bookName = obj.getString("name");
                                myBook.bookAuthor = obj.getString("location");
                                myBook.bookCover= obj.getString("logo");
                                // adding schools to ourSchool list
                                ourBooksListItems.add(myBook);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }

                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                pDialog.hide();
            }
        });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(schoolRequest);
        return view;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        toolbar.setTitle(sportCardModel.getSportTitle());
        toolbar.setNavigationIcon(R.drawable.ic_back);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getActivity().onBackPressed();
            }
        });
        toolbar.setBackgroundColor(ContextCompat.getColor(getContext(), sportCardModel.getBackgroundColorResId()));
        ivPhoto.setImageResource(sportCardModel.getImageResId());
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putParcelable(EXTRA_SRORT_CARD_MODEL, sportCardModel);
        super.onSaveInstanceState(outState);
    }

    static class DividerItemDecoration extends RecyclerView.ItemDecoration {

        private static final int[] ATTRS = new int[]{android.R.attr.listDivider};

        private Drawable mDivider;

        /**
         * Default divider will be used
         */
        public DividerItemDecoration(Context context) {
            final TypedArray styledAttributes = context.obtainStyledAttributes(ATTRS);
            mDivider = styledAttributes.getDrawable(0);
            styledAttributes.recycle();
        }

        /**
         * Custom divider will be used
         */
        public DividerItemDecoration(Context context, int resId) {
            mDivider = ContextCompat.getDrawable(context, resId);
        }

        @Override
        public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
            int left = parent.getPaddingLeft();
            int right = parent.getWidth() - parent.getPaddingRight();

            int childCount = parent.getChildCount();
            for (int i = 0; i < childCount; i++) {
                View child = parent.getChildAt(i);

                RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

                int top = child.getBottom() + params.bottomMargin;
                int bottom = top + mDivider.getIntrinsicHeight();

                mDivider.setBounds(left, top, right, bottom);
                mDivider.draw(c);
            }
        }
    }
}
package com.example.user.ekta;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.content.Intent;
导入android.content.res.TypedArray;
导入android.graphics.Canvas;
导入android.graphics.drawable.drawable;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.support.v4.content.ContextCompat;
导入android.support.v7.widget.DefaultItemAnimator;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.Toast;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.VolleyLog;
导入com.android.volley.toolbox.JsonArrayRequest;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.ArrayList;
导入java.util.List;
公共类FullInfoTabFragment扩展了片段{
私有静态最终字符串EXTRA\u SRORT\u CARD\u MODEL=“EXTRA\u SRORT\u CARD\u MODEL”;
//字符串转换标记;
私人SportCardModel SportCardModel;
专用工具栏;
私人影像查看照片;
私有静态最终字符串标记=FullInfoTabFragment.class.getSimpleName();
私有静态最终字符串url=”http://myeducationhunt.com/public/schools";
私人对话;
private List-ourbookslist-items=new-ArrayList();
私有列表视图列表视图;
私有MyBookAdapter适配器;
公共静态FullInfoTabFragment新实例(SportCardModel SportCardModel){
FullInfoTabFragment=新的FullInfoTabFragment();
Bundle args=新Bundle();
参数。可随身携带(额外存储卡型号、运动卡型号);
fragment.setArguments(args);
返回片段;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
如果(getArguments()!=null){
sportCardModel=getArguments().getParcelable(额外端口卡型号);
}
如果(savedInstanceState!=null){
sportCardModel=savedInstanceState.getParcelable(额外的存储卡型号);
}
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u full\u info,container,false);
toolbar=(toolbar)view.findviewbyd(R.id.toolbar);
ivPhoto=(ImageView)view.findViewById(R.id.ivPhoto);
listView=(listView)view.findViewById(R.id.list);
adapter=新的MyBookAdapter(getActivity(),ourBookListItems);
setAdapter(适配器);
setTextFilterEnabled(true);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//我们的学校我们的学校=新的我们的学校();
//Intent i=新的Intent(getContext(),SchoolDetails.class);
//i.putExtra(“id”,我们的学校机构.get(position).schoolId);
//i.putExtra(“名称”,我们的学校名称。获取(职位)。学校名称);
//i.putExtra(“位置”,我们的学校列表.get(位置).schoolLocation);
//i.putExtra(“logo”,我们的学校机构.get(position).school logo);
//i.putExtra(“电子邮件”,我们的学校系统.get(position).schoolEmail);
//i.putExtra(“网站”,我们的学校网站.get(position).schoolWebsite);
//i.putExtra(“创建于”,我们的学校系统.get(position.createdAt);
//i.putExtra(“更新的”,我们的学校系统.get(position).updatedAt);
//星触觉(i);
}
});
pDialog=newprogressdialog(getActivity());
//在发出http请求之前显示进度对话框
设置消息(“加载…”);
pDialog.show();
//创建截击请求对象
JsonArrayRequest schoolRequest=新的JsonArrayRequest(url,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
pDialog.hide();
//解析json
对于(int i=0;ipackage com.example.user.ekta;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;


import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;

import java.util.List;

/**
 * Created by user on 11/27/2016.
 */
public class MyBookAdapter extends BaseAdapter {

    private Activity activity;
    private LayoutInflater inflater;
    private List<MyBook> ourbooksList;
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();

    public MyBookAdapter(Activity activity, List<MyBook> ourbooksListsList) {
        this.activity = activity;
        this.ourbooksList = ourbooksListsList;
    }


    @Override
    public int getCount() {
        return ourbooksList.size();
    }

    @Override
    public Object getItem(int location) {
        return ourbooksList.get(location);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        if (inflater == null)
            inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null)
            convertView = inflater.inflate(R.layout.list_books, null);

        if (imageLoader == null)
            imageLoader = AppController.getInstance().getImageLoader();
        NetworkImageView bookCover = (NetworkImageView) convertView
                .findViewById(R.id.bookCover);
        TextView bookName = (TextView) convertView.findViewById(R.id.bookName);
        TextView boookAuthor = (TextView) convertView.findViewById(R.id.bookAuthor);
        MyBook m = ourbooksList.get(position);

        bookCover.setImageUrl(m.getBookCover(), imageLoader);

        bookName.setText("Name: " + m.getBookName());

        boookAuthor.setText("Address: " + String.valueOf(m.getBookAuthor()));


        return convertView;
    }
}