我有一個片段類,它是viewpager中幾個其他類的一部分。我想創建一個ListView
通過和陣列適配器,並顯示其中一個片段的列表視圖中的內容。這裏的問題是當我執行MyLogs.add(new actlog("String","String");
程序崩潰時,但是當我添加刪除這行代碼的應用程序運行,但片段是空白的。這通常是我如何在活動類上設置並顯示我的ListView
,但它對片段類不起作用。ListView沒有出現在片段類
片段類
package com.example.swipeview;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class FragmentOne extends Fragment {
Context context;
public List<actlog> MyLogs = new ArrayList<actlog>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
View view= inflater.inflate(R.layout.fragment_one_layout,container, false);
MyLogs.add(new actlog("12:00 AM",""));
MyLogs.add(new actlog("12:30 AM",""));
MyLogs.add(new actlog("1:00 AM",""));
MyLogs.add(new actlog("1:30 AM",""));
MyLogs.add(new actlog("2:00 AM",""));
MyLogs.add(new actlog("2:30 AM",""));
MyLogs.add(new actlog("3:00 AM",""));
ArrayAdapter<actlog> adapter = new MyListAdapter();
ListView list = (ListView) view.findViewById(R.id.fragmentonelistview);
list.setAdapter(adapter);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public class MyListAdapter extends ArrayAdapter<actlog>{
public MyListAdapter(){
super(getActivity(),R.layout.item_view, MyLogs);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_view, parent, false);
actlog currentlog = MyLogs.get(position);
TextView textview = (TextView) convertView.findViewById(R.id.timeView);
textview.setText(currentlog.getTime());
return convertView;
}
}//end of listadapter class
}//end of class
ACTLOG類
package com.example.swipeview;
import java.io.Serializable;
public class actlog implements Serializable{
public String time;
public String log;
public actlog(String time, String log) {
super();
this.time = time;
this.setLog(log);
}
public String getTime(){
return time;
}
public String getLog(){
return log;
}
public void setLog(String log){
this.log = log;
}
}
logcat的
09-03 19:50:39.989: W/dalvikvm(1548): threadid=1: thread exiting with uncaught exception (group=0xb1aa4ba8)
09-03 19:50:40.019: E/AndroidRuntime(1548): FATAL EXCEPTION: main
09-03 19:50:40.019: E/AndroidRuntime(1548): Process: com.example.swipeview, PID: 1548
09-03 19:50:40.019: E/AndroidRuntime(1548): java.lang.NullPointerException
09-03 19:50:40.019: E/AndroidRuntime(1548): at com.example.swipeview.FragmentOne$MyListAdapter.getView (FragmentOne.java:63)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.widget.AbsListView.obtainView(AbsListView.java:2263)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.widget.ListView.onMeasure(ListView.java:1175)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.view.View.measure(View.java:16497)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:689)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:473)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.view.View.measure(View.java:16497)
09-03 19:50:40.019: E/AndroidRuntime(1548): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
09-03 19:50:40.019: E/AndroidRuntime
我認爲你的代碼應該拋出NULLPointerException,因爲你的變量'context'在代碼 的任何地方都沒有初始化,否則你的代碼看起來很好。 – Subham 2014-09-03 23:33:13
它拋出什麼異常?空指針異常?你可以發佈你的行爲日誌類嗎? – 2014-09-03 23:35:50
可能。這可以解釋爲什麼當他不將項目添加到列表時,應用程序不會崩潰。 getView()方法永遠不會被調用,因爲它的數據是空的。 – 2014-09-03 23:39:57