[英]Fragments, ListView and Custom Adapters
我是android上的新手,正在創建一個應用程序。
應用程序布局是使用“ 滑動視圖”配置的。 其中一個片段具有一個ListView
,其中包含已完成操作的歷史記錄。 當用戶單擊按鈕時,應用程序會選擇一些數據,然后將其放在ListView.
展開的布局是自定義布局。 但是,當我嘗試單擊按鈕時,應用程序停止工作。 看到:
適配器
public class ChronoListAdapter extends ArrayAdapter<RegExpItem> {
private ArrayList<RegExpItem> regExpItems = null;
private Context context;
public ChronoListAdapter(Context context, int resource, ArrayList<RegExpItem> objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
}
public View getView(int position, View convertView, ViewGroup parent) {
//Inflate Row and retrieve TextViews and ImageViews
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View listItem = inflater.inflate(R.layout.list_item, parent, false);
TextView regExpItem = (TextView) listItem.findViewById(R.id.RegExpList);
TextView stringItem = (TextView) listItem.findViewById(R.id.StringList);
ImageView matchItem = (ImageView) listItem.findViewById(R.id.MatchList);
//Insert Strings
regExpItem.setText(regExpItems.get(position).regExp);
stringItem.setText(regExpItems.get(position).strings);
//Change image for true or false
if (regExpItems.get(position).match) {
matchItem.setImageResource(R.drawable.ic_checkmark_holo_light);
} else {
matchItem.setImageResource(R.drawable.ic_clear_search_api_holo_light);
}
return listItem;
}
}
在ChronoFragment上的實現(onCreateView())
OnClick
RegExpItem rei = new RegExpItem(regExp, input, true);
regExpItems.add(rei);
adapter.notifyDataSetChanged();
Eclipse沒有任何問題,我也沒有構建問題。 我該如何解決?
PS:將其分配給適配器時, ArrayList
為空。
編輯:經過一些嘗試,我認為當我將項目添加到ArrayList
時,應用程序崩潰
堆棧跟蹤
Thread [<1> main] (Suspended (exception NullPointerException))
<VM does not provide monitor information>
Choreographer.doCallbacks(int, long) line: 572
Choreographer.doFrame(long, int) line: 532
Choreographer$FrameDisplayEventReceiver.run() line: 735
Handler.handleCallback(Message) line: 730
Choreographer$FrameHandler(Handler).dispatchMessage(Message) line: 92
Looper.loop() line: 137
ActivityThread.main(String[]) line: 5289
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 525
ZygoteInit$MethodAndArgsCaller.run() line: 739
ZygoteInit.main(String[]) line: 555
NativeStart.main(String[]) line: not available [native method]
Logcat
11-08 11:06:38.360: E/AndroidRuntime(10188): FATAL EXCEPTION: main
11-08 11:06:38.360: E/AndroidRuntime(10188): java.lang.NullPointerException
11-08 11:06:38.360: E/AndroidRuntime(10188): at com.slinky.regexptool.ChronoListAdapter.getView(ChronoListAdapter.java:30)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.AbsListView.obtainView(AbsListView.java:2177)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.ListView.makeAndAddView(ListView.java:1840)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.ListView.fillDown(ListView.java:675)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.ListView.fillFromTop(ListView.java:736)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.ListView.layoutChildren(ListView.java:1655)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.AbsListView.onLayout(AbsListView.java:2012)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.View.layout(View.java:14296)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.View.layout(View.java:14296)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1589)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.View.layout(View.java:14296)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.View.layout(View.java:14296)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-08 11:06:38.360: E/AndroidRuntime(10188): at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:349)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.View.layout(View.java:14296)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.View.layout(View.java:14296)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.Choreographer.doFrame(Choreographer.java:532)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.os.Handler.handleCallback(Handler.java:730)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.os.Handler.dispatchMessage(Handler.java:92)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.os.Looper.loop(Looper.java:137)
11-08 11:06:38.360: E/AndroidRuntime(10188): at android.app.ActivityThread.main(ActivityThread.java:5289)
11-08 11:06:38.360: E/AndroidRuntime(10188): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 11:06:38.360: E/AndroidRuntime(10188): at java.lang.reflect.Method.invoke(Method.java:525)
11-08 11:06:38.360: E/AndroidRuntime(10188): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
11-08 11:06:38.360: E/AndroidRuntime(10188): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
11-08 11:06:38.360: E/AndroidRuntime(10188): at dalvik.system.NativeStart.main(NativeMethod)
我認為您需要將其添加到您的ChronoListAdapter的構造函數中:
this.regExpItems = objects;
如果這是問題所在,則您的應用程序會在NullPointerException上崩潰。 您可以使用LogCat在Eclipse中查看Android的堆棧跟蹤(窗口->顯示視圖->其他...-> LogCat。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.