Pregunta

Estoy utilizando SeparatedListAdapter según lo escrito por Jeff Sharkey . Originalmente empecé a desarrollar esta aplicación en Nexus One, donde he conseguido que funcionan exactamente como se pretende. Ahora me estoy moviendo en las pruebas de ciertas partes, y mi solicitud está fallando en todos estos otros teléfonos que ejecutan Android 2.1. Mi proyecto de construcción de destino es de 2.1 Update1 mismo que todos estos teléfonos.

Esta es la LogCat por el error

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)

La parte pertinente de mi código que hace referencia el Logcat

     @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;  
    }

Con el error viene en "adapter.getView de retorno (posición - 1, convertView, los padres);"

Después de haber pasado una buena cantidad en StackOverflow, sé que es muy difícil de entender lo que está pasando, aquí es un resumen. La vista de lista muestra una lista de las puntuaciones de los deportes, por lo que cada elemento se compone de 2 nombres de los equipos, 2 puntuaciones y un icono.

agradecería cualquier consejos. He intentado buscar cuando el código de SimpleAdapter de averiguar lo que está causando el error, pero no puede entenderlo. Gracias.

¿Fue útil?

Solución

he dado cuenta de esto, y estoy respondiendo posiblemente ayuda de los compañeros desarrolladores de Android.

El problema es que yo estaba tratando de hacer SeparatedListAdapter getView de hacer las cosas que el adaptador subyacente se supone que es el cuidado de. Llamé a mi adaptador de un SectionAdapter que se extiende SimpleAdapter, donde manipulo mis elementos de la vista mientras que necesito. Cuando agrego una sección como esta

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

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top