簡體   English   中英

片段,ListView和自定義適配器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM