2016-08-12 1 views
0

Hey in diesem Programm habe ich ein GridView nach dem Text es hat aber beim Ausführen der App die Lag viel sowohl auf dem Emulator als auch auf dem Gerät. Und der FehlerGridView: Die Anwendung möglicherweise zu viel Arbeit auf seinem Hauptthread.Skiped X Frames Fehler bei der Verwendung verschiedener Bilder

"Die Anwendung möglicherweise zu viel Arbeit auf seinem Hauptthread." ist gegeben Ich denke, das ist, was das Problem hier verursacht.

Hier ist meine ImageAdapter Datei

public class ImageAdapter extends BaseAdapter { 
static class ViewHolder { 
    ImageView imageView; 
    TextView textView; 

} 

private Context context; 
String mobile; 
private final String[] mobileValues; 

int[] imagesArr = new int[]{R.drawable.badminton, R.drawable.cricket, R.drawable.basketball, R.drawable.carrom, 
     R.drawable.handball, R.drawable.humanfoosball, R.drawable.kabaddi, R.drawable.khokho, R.drawable.chess, 
     R.drawable.longjump, R.drawable.streetsoccer, R.drawable.shotput, R.drawable.volleyball, R.drawable.tugofwar, 
     R.drawable.tabletennis, R.drawable.handball, R.drawable.rellayrace}; 

public ImageAdapter(Context context, String[] mobileValues) { 
    this.context = context; 
    this.mobileValues = mobileValues; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    View row = convertView; 

    if (row == null) { 
     holder = new ViewHolder(); 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     //row = new View(context); 

     // get layout from grid_itemxml.xml 
     row = inflater.inflate(R.layout.grid_item, null); 

     // set value into textview 
     holder.textView = (TextView) row.findViewById(R.id.grid_item_label); 

     holder.textView.setText(mobileValues[position]); 

     // set image based on selected text 
     holder.imageView = (ImageView) row.findViewById(R.id.grid_item_image); 
     mobile = mobileValues[position]; 


     if (mobile.equals("Badminton")) { 
      holder.imageView.setImageResource(imagesArr[0]); 

     } 
     if (mobile.equals("Cricket")) { 
      holder.imageView.setImageResource(imagesArr[1]); 
     } 
     if (mobile.equals("Basketball")) { 
      holder.imageView.setImageResource(imagesArr[2]); 
     } 
     if (mobile.equals("Carrom")) { 
      holder.imageView.setImageResource(imagesArr[3]); 
     } 
     if (mobile.equals("Handball")) { 
      holder.imageView.setImageResource(imagesArr[4]); 
     } 
     if (mobile.equals("Human Foosball")) { 
      holder.imageView.setImageResource(imagesArr[5]); 
     } 
     if (mobile.equals("Kabaddi")) { 
      holder.imageView.setImageResource(imagesArr[6]); 
     } 
     if (mobile.equals("Khokho")) { 
      holder.imageView.setImageResource(imagesArr[7]); 
     } 
     if (mobile.equals("Chess")) { 
      holder.imageView.setImageResource(imagesArr[8]); 
     } 
     if (mobile.equals("Longjump")) { 
      holder.imageView.setImageResource(imagesArr[9]); 
     } 
     if (mobile.equals("Streetsoccer")) { 
      holder.imageView.setImageResource(imagesArr[10]); 
     } 
     if (mobile.equals("Shotput")) { 
      holder.imageView.setImageResource(imagesArr[11]); 
     } 
     if (mobile.equals("Volleyball")) { 
      holder.imageView.setImageResource(imagesArr[12]); 
     } 
     if (mobile.equals("Tugofwar")) { 
      holder.imageView.setImageResource(imagesArr[13]); 
     } 
     if (mobile.equals("Table Tennis")) { 
      holder.imageView.setImageResource(imagesArr[14]); 
     } 
     if (mobile.equals("Relayrace")) { 
      holder.imageView.setImageResource(imagesArr[15]); 
     } 

    } else { 
     holder = (ViewHolder) row.getTag(); 
    } 

    return row; 
} 

@Override 
public int getCount() { 
    return mobileValues.length; 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

Antwort

1

Die Bilder in Ihrem Projekt zu viel Zeit nehmen, um die Bilder zu laden, wenn die Android-Speicherressourcen app.There begrenzt sind einige Lösung, die Sie kann versuchen

  • Halten Sie Bildgröße niedrig (Nachteil wird schlechte Qualität auf größeren Bildschirmen).
  • Komprimieren Sie das Bild zur Laufzeit in die erforderliche Bildschirmauflösung.

Der einfache Weg ist die Verwendung von Bildladebibliotheken. Versuchen Sie, diese link für Details z

Picasso.with(context).load(R.drawable.drawableName).fit().centerCrop().into(imageViewFit) 
+0

Link nicht funktioniert @Pavneet Singh –

Verwandte Themen