Frage

Ich verwende SeparatedListAdapter wie geschrieben von Jeff Sharkey . Ich habe ursprünglich angefangen, diese Anwendung auf Nexus One zu entwickeln, wo ich sie genauso wie beabsichtigt funktioniert. Jetzt teste ich bestimmte Teile und meine Anwendung stürzt auf all diesen anderen Telefonen, die Android 2.1 ausführen. Mein Projekt Build-Ziel ist 2.1-update1 wie alle diese Telefone.

Hier ist der Logcat für den Fehler

01-21 18:24:01.486: ERROR/AndroidRuntime(4615): Uncaught handler: thread main exiting due to uncaught exception
01-21 18:24:01.588: ERROR/AndroidRuntime(4615): java.lang.NullPointerException
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.SimpleAdapter.bindView(SimpleAdapter.java:171)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:138)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.SimpleAdapter.getView(SimpleAdapter.java:116)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at com.hitpost.GamesList$SeparatedListAdapter.getView(GamesList.java:347)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.AbsListView.obtainView(AbsListView.java:1274)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.ListView.makeAndAddView(ListView.java:1668)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.ListView.fillDown(ListView.java:637)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.ListView.fillSpecific(ListView.java:1224)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.ListView.layoutChildren(ListView.java:1511)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.AbsListView.onLayout(AbsListView.java:1113)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.view.View.layout(View.java:6830)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:900)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.view.View.layout(View.java:6830)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.view.View.layout(View.java:6830)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.view.View.layout(View.java:6830)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.view.ViewRoot.performTraversals(ViewRoot.java:996)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at android.os.Looper.loop(Looper.java:123)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at  android.app.ActivityThread.main(ActivityThread.java:4363)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at java.lang.reflect.Method.invokeNative(Native Method)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at java.lang.reflect.Method.invoke(Method.java:521)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-21 18:24:01.588: ERROR/AndroidRuntime(4615):     at dalvik.system.NativeStart.main(Native Method)

Der relevante Teil meines Code

     @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        int sectionnum = 0;  
        for(Object section : this.sections.keySet()) {  
            Adapter adapter = sections.get(section);  
            int size = adapter.getCount() + 1;  


            // check if position inside this section  
            if(position == 0) 
                return headers.getView(sectionnum, convertView, parent);  
            if(position < size) {
                //View row = convertView;
                ScoreViewHolder viewHolder;
                HashMap<String,Object> map = (HashMap<String,Object>) adapter.getItem(position - 1);
                if (convertView == null) {
                    convertView = inflater.inflate(R.layout.league_list_item, null);
                    viewHolder = new ScoreViewHolder();
                    viewHolder.row = (RelativeLayout) convertView.findViewById(R.id.ListItem);
                    viewHolder.checkinImage = (ImageView) viewHolder.row.findViewById(R.id.CheckinLeagueImage);
                    viewHolder.score1 = (TextView) viewHolder.row.findViewById(R.id.Team1Score);
                    viewHolder.score2 = (TextView) viewHolder.row.findViewById(R.id.Team2Score);
                    convertView.setTag(viewHolder);
                } else {
                    viewHolder = (ScoreViewHolder) convertView.getTag();
                }
                if ((Integer) map.get("position") % 2 == 1)
                    viewHolder.row.setBackgroundColor(Color.DKGRAY);
                else
                    viewHolder.row.setBackgroundColor(Color.GRAY);

                if (map.get("gamestatus").equals("Final")) {
                    viewHolder.gameFinal();
                } else if (map.get("gamestatus").equals("In-Progress")) {
                    viewHolder.gameInProgress();
                } else if (map.get("gamestatus").equals("Pre-Game")) {
                    viewHolder.gameFinal();
                }
                viewHolder.row.setOnClickListener(new GameItemListener((String)map.get("id"), 
                        map.get("team2Name") + " " +
                        map.get("team2Score") + " @ " +
                        map.get("team1Name") + " " +
                        map.get("team1Score")                               
                ));
                return adapter.getView(position - 1, convertView, parent);                      
            }

            // otherwise jump into next section  
            position -= size;  
            sectionnum++;  
        }  
        return null;  
    }

Mit dem Fehler "adapter zurückgeben.getView (Position - 1, convertView, übergeordnet)";

Nachdem ich eine angemessene Menge für Stackoverflow verbracht habe, weiß ich, dass es sehr schwer zu verstehen ist, was los ist. Hier ist eine Zusammenfassung. Die ListView zeigt eine Liste der Punktzahlen für Sport an, sodass jedes Element aus 2 Teamnamen, 2 Bewertungen und einem Symbol besteht.

Würde sich über Hinweise freuen. Ich habe versucht, durch den Code von Simpleadapter zu suchen, um herauszufinden, was den Fehler verursacht, aber nicht herausfinden kann. Vielen Dank.

War es hilfreich?

Lösung

Ich habe das herausgefunden und reagiere darauf, anderen Android -Entwicklern möglicherweise zu helfen.

Das Problem ist, dass ich versucht habe, SeparatedListAdapter GetView zu machen, um Dinge zu tun, um die sich der zugrunde liegende Adapter kümmern soll. Ich rief meinen Adapter einen Abschnittsadapter an, der SimplEDapter erweitert, wo ich meine Sichtelemente so manipuliere, wie ich es braucht. Wenn ich einen solchen Abschnitt hinzufüge

adapter.addSection(currentGameDate, new SectionAdapter(mContext, mActivity, currentGameDateSubset, R.layout.league_list_item, keyNames, keyIds));

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top