Java 片段中的列表视图空指针异常

Java 片段中的列表视图空指针异常,java,android,android-fragments,android-listview,swiperefreshlayout,Java,Android,Android Fragments,Android Listview,Swiperefreshlayout,我试图在片段中设置滑动以刷新,该片段从解析中获取对象。但每次,我似乎都会在setadapter和list视图上得到一个空指针异常。虽然它们都已正确初始化,但它们不为null 我最近的采访: package com.astuetz.viewpager.extensions.sample; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import andr

我试图在片段中设置滑动以刷新,该片段从解析中获取对象。但每次,我似乎都会在setadapter和list视图上得到一个空指针异常。虽然它们都已正确初始化,但它们不为null

我最近的采访:

package com.astuetz.viewpager.extensions.sample;

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 java.util.ArrayList;
import java.util.HashMap;

public class RecentsAdapter extends BaseAdapter
{

        LayoutInflater inflater;
        Context context;
        ArrayList<HashMap<String,String>> items = null;

        public RecentsAdapter(Context context,ArrayList<HashMap<String,String>> items)
        {
            super();
            this.context = context;
            this.items = items;
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        }

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

        @Override
        public Object getItem(int position)
        {
            return items.get(position);
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            View v = convertView;
            MyHolder holder = null;
            if(v == null)
            {
                v = inflater.inflate(R.layout.recents_list_item,parent,false);
                holder = new MyHolder(v);
                v.setTag(holder);
            }

            else
            {
                holder = (MyHolder) v.getTag();
            }

            holder.title.setText(items.get(position).get("title"));
            holder.author.setText(items.get(position).get("author"));
            holder.dept.setText(items.get(position).get("dept"));
            holder.price.setText(items.get(position).get("price"));
    //        holder.place.setText(items.get(position).get("place"));


            return v;
        }

        class MyHolder
        {

            TextView dept,title,author,price,place;

            public MyHolder(View view)
            {
                title = (TextView) view.findViewById(R.id.book_title);
                dept = (TextView)view.findViewById(R.id.dept_name);
                author = (TextView) view.findViewById(R.id.author_name);
                price = (TextView)view.findViewById(R.id.price_list);
    //            place = (TextView)view.findViewById(R.id.place_list);
            }

        }
    }
package com.astuetz.viewpager.extensions.sample;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.HashMap;
公共类RecentsAdapter扩展BaseAdapter
{
充气机;
语境;
arraylistitems=null;
public RecentsAdapter(上下文、数组列表项)
{
超级();
this.context=上下文;
这个项目=项目;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
public int getCount()
{
返回items.size();
}
@凌驾
公共对象getItem(int位置)
{
返回项目。获取(位置);
}
@凌驾
公共长getItemId(int位置)
{
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
视图v=转换视图;
MyHolder=null;
如果(v==null)
{
v=充气机。充气(右布局。最近列表项目,父项,false);
持有人=新的我的持有人(v);
v、 setTag(支架);
}
其他的
{
holder=(MyHolder)v.getTag();
}
holder.title.setText(items.get(position.get(“title”));
holder.author.setText(items.get(position.get(“author”));
holder.dept.setText(items.get(position.get(“dept”));
holder.price.setText(items.get(position.get(“价格”));
//holder.place.setText(items.get(position.get(“place”));
返回v;
}
类别MyHolder
{
TextView部门、标题、作者、价格、地点;
公共MyHolder(视图)
{
title=(TextView)view.findViewById(R.id.book\u title);
dept=(TextView)view.findViewById(R.id.dept\u name);
author=(TextView)view.findViewById(R.id.author\u name);
price=(TextView)view.findViewById(R.id.price\u列表);
//place=(TextView)view.findViewById(R.id.place\u列表);
}
}
}
Myrecent_card.xml用于定义我的列表视图和刷卡刷新:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:card_view="http://schemas.android.com/apk/res-auto"
             android:layout_width="match_parent"
             android:layout_height="match_parent">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <android.support.v7.widget.CardView
        android:id="@+id/recents_card"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="8dp"
        card_view:cardBackgroundColor="@android:color/white"
        card_view:cardCornerRadius="8dp"
        android:padding="8dp">

        <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/recents_list"
            android:divider="@color/dividerColor"
            android:dividerHeight="1dp"/>

    </android.support.v7.widget.CardView>
    </android.support.v4.widget.SwipeRefreshLayout>
</FrameLayout>

以及实现它们的myRecentsCardFragment.java

/*
 * Copyright (C) 2013 Andreas Stuetz <andreas.stuetz@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.astuetz.viewpager.extensions.sample;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.ListView;
import android.widget.Toast;


import com.parse.FindCallback;
import com.parse.GetCallback;
import com.parse.Parse;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;



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



public class RecentsCardFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener
{
   ListView  recentsList = (ListView)getActivity().findViewById(R.id.recents_list);

    private SwipeRefreshLayout refreshBooks;

     ArrayList<HashMap<String,String>> items = new ArrayList<>();





    //private  ProgressDialog progress;


    public static RecentsCardFragment newInstance() {
        RecentsCardFragment f = new RecentsCardFragment();
            return f;
        }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.recents_card,container,false);
        ViewCompat.setElevation(rootView,50);
        refreshBooks = (SwipeRefreshLayout) rootView.findViewById(R.id.container);
        refreshBooks.setOnRefreshListener(this);


        getBooks();


        RecentsAdapter  adapter = new RecentsAdapter(getActivity().getApplicationContext(), items);

        recentsList.setAdapter(adapter);


        return rootView;
    }


    private ArrayList<HashMap<String,String>> getBooks(){

        final ParseQuery<ParseObject> query = ParseQuery.getQuery("Posted");
        query.orderByDescending("createdAt");

        query.findInBackground(new FindCallback<ParseObject>() {


            @Override
            public void done(List<ParseObject> parseObjects, ParseException e) {


                if (e == null){

                    Log.w("Parse","Inside getbooks()");
                    for (ParseObject book : parseObjects) {

                        HashMap<String, String> test = new HashMap<>();

                        String dept = book.getString("Department");
                        String title = book.getString("Title");
                        String author = book.getString("Author");
                        Number price_num = book.getNumber("Price");
                        String price = String.valueOf(price_num);
                        String place = book.getString("Place");
                        String desp = book.getString("Description");

                        test.put("dept", dept);
                        test.put("title", title);
                        test.put("author", author);
                        test.put("price", price);
                        test.put("place", place);
                        test.put("description", desp);

                        items.add(test);




                    }


                } else {

                    Log.d("Books", "Error: " + e.getMessage());

                }

            }

        });

        return items;
    }


    @Override
    public void onRefresh(){

        refreshBooks.setRefreshing(true);
        updateBooks();



}

    private void updateBooks(){

        Toast.makeText(getActivity(),"Refresh", Toast.LENGTH_SHORT).show();

        items.addAll(getBooks());

      refreshBooks.setRefreshing(false);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

   }


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

    }


 }
/*
*版权所有(C)2013 Andreas Stuetz
*
*根据Apache许可证2.0版(以下简称“许可证”)获得许可;
*除非遵守许可证,否则不得使用此文件。
*您可以通过以下方式获得许可证副本:
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*除非适用法律要求或书面同意,软件
*根据许可证进行的分发是按“原样”进行分发的,
*无任何明示或暗示的保证或条件。
*请参阅许可证以了解管理权限和权限的特定语言
*许可证下的限制。
*/
包com.astuetz.viewpager.extensions.sample;
导入android.app.AlertDialog;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.view.ViewCompat;
导入android.support.v4.widget.swiperFreshLayout;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Adapter;
导入android.widget.ListView;
导入android.widget.Toast;
导入com.parse.FindCallback;
导入com.parse.GetCallback;
导入com.parse.parse;
导入com.parse.ParseException;
导入com.parse.ParseObject;
导入com.parse.ParseQuery;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
公共类RecentsCardFragment扩展片段实现SwiperFreshLayout.OnRefreshListener
{
ListView-recentsList=(ListView)getActivity().findViewById(R.id.recents\u列表);
私家Switch书籍;
ArrayList items=新建ArrayList();
//私人进展对话进展;
公共静态RecentsCardFragment newInstance(){
RecentsCardFragment f=新的RecentsCardFragment();
返回f;
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(右布局。最近的卡,容器,假);
ViewCompat.setElevation(根视图,50);
refreshBooks=(SwipeRefreshLayout)rootView.findViewById(R.id.container);
refreshBooks.setOnRefreshListener(此);
getBooks();
RecentsAdapter adapter=新的RecentsAdapter(getActivity().getApplicationContext(),items);
最近列表设置适配器(适配器);
返回rootView;
}
私有ArrayList getBooks(){
final ParseQuery=ParseQuery.getQuery(“已发布”);
query.orderByDescending(“createdAt”);
findInBackground(新的FindCallback(){
@凌驾
public void done(列出parseObjects,parsee异常){
如果(e==null){
w(“Parse”,“Inside getbooks()”);
for(ParseObject手册:parseObjects){
HashMap test=新的HashMap();
String dept=book.getString(“部门”);
06-14 02:44:52.485    2373-2373/com.astuetz.viewpager.extensions.sample I/Process﹕ Sending signal. PID: 2373 SIG: 9
06-14 02:58:26.624    2502-2524/com.astuetz.viewpager.extensions.sample D/OpenGLRenderer﹕ Render dirty regions requested: true
06-14 02:58:26.644    2502-2502/com.astuetz.viewpager.extensions.sample D/﹕ HostConnection::get() New Host Connection established 0xabb86710, tid 2502
06-14 02:58:27.720    2502-2502/com.astuetz.viewpager.extensions.sample D/Atlas﹕ Validating map...
06-14 02:58:28.692    2502-2502/com.astuetz.viewpager.extensions.sample I/Choreographer﹕ Skipped 57 frames!  The application may be doing too much work on its main thread.
06-14 02:58:28.716    2502-2502/com.astuetz.viewpager.extensions.sample D/AndroidRuntime﹕ Shutting down VM
06-14 02:58:28.720    2502-2502/com.astuetz.viewpager.extensions.sample E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.astuetz.viewpager.extensions.sample, PID: 2502
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.v4.app.FragmentActivity.findViewById(int)' on a null object reference
            at com.astuetz.viewpager.extensions.sample.RecentsCardFragment.<init>(RecentsCardFragment.java:54)
            at com.astuetz.viewpager.extensions.sample.RecentsCardFragment.newInstance(RecentsCardFragment.java:68)
            at com.astuetz.viewpager.extensions.sample.MainActivity$MyPagerAdapter.getItem(MainActivity.java:133)
            at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
            at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:837)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:987)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
            at android.view.View.measure(View.java:17430)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:875)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
            at android.view.Choreographer.doCallbacks(Choreographer.java:580)
            at android.view.Choreographer.doFrame(Choreographer.java:550)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
06-14 02:58:32.992    2502-2502/com.astuetz.viewpager.extensions.sample I/Process﹕ Sending signal. PID: 2502 SIG: 9
public class RecentsCardFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener
{
   ListView  recentsList;

    private SwipeRefreshLayout refreshBooks;

     ArrayList<HashMap<String,String>> items = new ArrayList<>();

    //private  ProgressDialog progress;

    public static RecentsCardFragment newInstance() {
        RecentsCardFragment f = new RecentsCardFragment();
            return f;
        }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.recents_card,container,false);
        recentsList = (ListView)rootView.findViewById(R.id.recents_list);
        ViewCompat.setElevation(rootView,50);
        refreshBooks = (SwipeRefreshLayout) rootView.findViewById(R.id.container);
        refreshBooks.setOnRefreshListener(this);


        getBooks();


        RecentsAdapter  adapter = new RecentsAdapter(getActivity().getApplicationContext(), items);

        recentsList.setAdapter(adapter);


        return rootView;
    }