Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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 BaseAdapter的ListFragment出现问题_Android_Nullpointerexception_Loader_Android Listfragment_Baseadapter - Fatal编程技术网

Android BaseAdapter的ListFragment出现问题

Android BaseAdapter的ListFragment出现问题,android,nullpointerexception,loader,android-listfragment,baseadapter,Android,Nullpointerexception,Loader,Android Listfragment,Baseadapter,我正在尝试使用自定义BaseAdapter创建一个列表。我得到了nullpointerexception错误,似乎我不能正确地将数据加载到适配器中,或者视图是错误的 以下是我的代码: 碎片活动 public class NewsItemListActivity extends FragmentActivity implements NewsItemListFragment.Callbacks { @Override protected void onCreate(Bundle s

我正在尝试使用自定义BaseAdapter创建一个列表。我得到了nullpointerexception错误,似乎我不能正确地将数据加载到适配器中,或者视图是错误的

以下是我的代码:
碎片活动

public class NewsItemListActivity extends FragmentActivity implements NewsItemListFragment.Callbacks {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_newsitem_list);        
        if (savedInstanceState != null) {
            mActivePosition = savedInstanceState.getInt(STATE_ACTIVE_POSITION);
        }
        if (findViewById(R.id.newsitem_detail_container) != null) {
            listfragment = ((NewsItemListFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.newsitem_list));
            listfragment.setActivateOnItemClick(true);      
        }
}
活动\新闻项目\列表布局

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/newsitem_list"
    android:name="com.example.app.NewsItemListFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    tools:context=".NewsItemListActivity"
    tools:layout="@android:layout/list_content" />
添加加载器

@Override
    public List<NewsData> loadInBackground() {
        List<NewsData> entries = null;
            .....
            return entries.add(new NewsData(i,subject,cdate));
}

@Override 
    public void deliverResult(List<NewsData> listOfData) {
        List<NewsData> oldNews = listOfData;
        mNewsData = listOfData;

        if (isStarted()) {
            // If the Loader is currently started, we can immediately
            // deliver its results.
            super.deliverResult(listOfData);
        }
    }

抱歉发了这么长的帖子…

其实很简单

我可以看出您没有初始化
列表数据

这就是为什么您会得到
NullPointerException

您应该在使用该列表之前创建该列表的新实例


在您的
OnCreate()
中写入
listdata=new List()
,并在该
列表中添加一些项目

自定义适配器的第25行上写了什么?
public int getCount(){return List.size();//line25}
当你试图运行这一行时,它看起来像是null中的列表。那一行上确实是null。我已经在
onCreate()
列表中添加了一些项目,现在可以显示了,但是它无法从加载程序加载数据,它只显示我在
onCreate()中写入的数据。
。如何加载正确的数据?我在BaseAdapter中添加了一个方法,从加载程序获取数据。无论如何谢谢你~~
public class CustomAdapter extends BaseAdapter{

    private List<NewsData> list;
    Context context;
    public CustomAdapter(Context c,List<NewsData> data){
        context = c;
        list = data;    
    }
    @Override
    public int getCount() {
        return list.size();
    }

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

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

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

        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = mInflater.inflate(R.layout.list_layout, parent, false);
        } else {
            view = convertView;
        }

        NewsData item = list.get(position);
        ((TextView)view.findViewById(R.id.subject)).setText(item.getSubject());
        ((TextView)view.findViewById(R.id.cdate)).setText(item.getCDate());

        return view;
    }

}
public class NewsData {
    public String id;
    public String subject; 
    public String cdate;

        public NewsData(String id, String subject,String cdate) {
            this.id = id;
            this.subject = subject;
            this.cdate = cdate;
        }
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getSubject() {
            return subject;
        }
        public void setSubject(String subject) {
            this.subject = subject;
        }
        ........
}
@Override
    public List<NewsData> loadInBackground() {
        List<NewsData> entries = null;
            .....
            return entries.add(new NewsData(i,subject,cdate));
}

@Override 
    public void deliverResult(List<NewsData> listOfData) {
        List<NewsData> oldNews = listOfData;
        mNewsData = listOfData;

        if (isStarted()) {
            // If the Loader is currently started, we can immediately
            // deliver its results.
            super.deliverResult(listOfData);
        }
    }
04-05 07:31:17.951: E/AndroidRuntime(1495): FATAL EXCEPTION: main
04-05 07:31:17.951: E/AndroidRuntime(1495): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.appapp/com.example.appapp.NewsItemListActivity}: java.lang.NullPointerException
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.os.Looper.loop(Looper.java:137)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.ActivityThread.main(ActivityThread.java:4745)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at java.lang.reflect.Method.invokeNative(Native Method)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at java.lang.reflect.Method.invoke(Method.java:511)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at dalvik.system.NativeStart.main(Native Method)
04-05 07:31:17.951: E/AndroidRuntime(1495): Caused by: java.lang.NullPointerException
04-05 07:31:17.951: E/AndroidRuntime(1495):     at com.example.appapp.CustomAdapter.getCount(CustomAdapter.java:25)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.widget.ListView.setAdapter(ListView.java:460)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.support.v4.app.ListFragment.setListAdapter(ListFragment.java:182)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at com.example.appapp.NewsItemListFragment.onActivityCreated(NewsItemListFragment.java:96)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1468)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1861)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.Activity.performStart(Activity.java:5018)
04-05 07:31:17.951: E/AndroidRuntime(1495):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
04-05 07:31:17.951: E/AndroidRuntime(1495):     ... 11 more