Android BaseAdapter的ListFragment出现问题
我正在尝试使用自定义BaseAdapter创建一个列表。我得到了nullpointerexception错误,似乎我不能正确地将数据加载到适配器中,或者视图是错误的 以下是我的代码: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
碎片活动
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