2011-10-04 13 views
6

El problema es un Resources $ NotFoundException en el tv2.settext(), no sé por qué tengo un TreeMap, dentro del título de la pizza y el recuento. Por favor ayuda!

Calling:

for (Pizza pizza : list) { 

      if(map.containsKey(pizza.title)) 
      { 

       int i = map.get(pizza.title); 
       map.remove(pizza.title); 

       map.put(pizza.title, i++); 
      } 
      else 
      { 
       map.put(pizza.title, 1); 
      } 
      } 

pizza:

public class Pizza implements Comparable<String> { 

    public String title; 
    public int rate; 
    public String date; 
    public Bitmap picture; 
    public int id; 
    @Override 
    public int compareTo(String another) { 
     // TODO Auto-generated method stub 
     return this.title.compareTo(another); 
    } 

} 

Código de error:

for (Entry<String, Integer> entry : map.entrySet()) { 

      tv.setText(entry.getKey()); 
      tv2.setText((Integer)entry.getValue()); //Error occures here 

      tv.setGravity(Gravity.LEFT); 
      tv2.setGravity(Gravity.RIGHT); 

      TableRow tr1 = new TableRow(this); 
      tr1.addView(tv); 
      tr1.addView(tv2); 
      tl.addView(tr1, new TableLayout.LayoutParams(
        LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT)); 
      } 
     } 

error:

10-04 09:04:40.475: ERROR/AndroidRuntime(954): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x1 

Respuesta

23

Cambio tv2.setText((Integer)entry.getValue()); a

tv2.setText(entry.getValue().toString()); 

hacer como esto

TableRow tr1 = new TableRow(this); 

for (Entry<String, Integer> entry : map.entrySet()) { 

     tv.setText(entry.getKey()); 
     tv2.setText((Integer)entry.getValue()); //Error occures here 

     tv.setGravity(Gravity.LEFT); 
     tv2.setGravity(Gravity.RIGHT); 

     tr1.addView(tv); 
     tr1.addView(tv2); 
     tl.addView(tr1, new TableLayout.LayoutParams(
       LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT)); 
     } 
    } 
+0

10-04 09: 22: 40.585: ERROR/AndroidRuntime (1009): Causado por: java.lang.IllegalStateException: el elemento secundario especificado ya tiene un elemento principal. Primero debe llamar a removeView() en el padre del niño. en 'tr1.addView (tv)' –

+0

edité mi respuesta. – Ramakrishna

0
tv2.setText((Integer)entry.getValue()); 

PARSE su Integer a String

0

No sé lo que está tratando de hacer, pero es obvio que no eres usando un R.string.my_title_or_so para setText. El Integer que pase a este método debe ser una identificación válida (generada) de su clase R. O encubras el número a una cadena, p. num + "".

3

Deberá utilizar: tv2.setText(entry.getValue().toString());

Por otra parte, no necesita línea de código siguiente:

map.remove(pizza.title); 

Todo lo que necesita para escribir es: Método de la Hoja de map.put(pizza.title, i++); becaues "ponen" sustituye a la antigua valor.

Cuestiones relacionadas