2016-06-30 6 views
0

Ich schrieb diesen Code RecyclerAdapter für meine RecyclerView in einem Fragment. Ich habe versucht, die Hintergrundfarbe der Karten in recyclerView durch eine Reihe von Farb Strings holder.cardView.setCardBackgroundColor(Color.parseColor()) zufällig zu ändern vorbei Dieser Code gearbeitet und die Farben geändert zufällig dann aber nach wenigen Sekunden der App abgestürzt und warfen die folgenden Fehler in den logcatFehler Die Anwendung möglicherweise zu viel Arbeit auf seinem Hauptthread

Skipped 49 frames! The application may be doing too much work on its main thread. 

Hier ist mein RecyclerAdapter.java

import android.graphics.Color; 
import android.support.v7.widget.CardView; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 


public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> { 

String[] postText; 
String[] groupName; 
String[] backColor = {"#ff6347", "#c2571a", "#a3b86c", "#3c6478", "#EBC94"}; 

public RecyclerAdapter(String[] postText, String[] groupName){ 
    this.postText = postText; 
    this.groupName = groupName; 
} 
@Override 
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view,parent,false); 
    RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view); 
    return recyclerViewHolder; 
} 

@Override 
public void onBindViewHolder(RecyclerViewHolder holder, int position) { 

    holder.txPost.setText(postText[position]); 
    holder.txGroupName.setText(groupName[position]); 
    holder.cardView.setCardBackgroundColor(Color.parseColor(backColor[position])); 

} 

@Override 
public int getItemCount() { 

    return postText.length; 
} 

public static class RecyclerViewHolder extends RecyclerView.ViewHolder{ 

    TextView txPost; 
    TextView txGroupName; 
    CardView cardView; 
    public RecyclerViewHolder(View view) 
    { 
     super(view); 
     txPost = (TextView) view.findViewById(R.id.post_text); 
     cardView = (CardView) itemView.findViewById(R.id.card_view); 

     txGroupName = (TextView) view.findViewById(R.id.group_name); 

    } 
} 
} 

Warum wird dieser Fehler auftritt? Und wie kann ich es reparieren? Ein bisschen Erklärung wird sehr hilfreich sein.

Antwort

0

Das einzige, was mir einfällt, ist die Color.parseColor, die unnötig lange dauern kann, um die Farbe von Ihrem Farbcode zu finden. Versuchen Sie alle Farben beim Erstellen des Adapters zu analysieren und sehen Sie, ob es funktioniert.

Verwandte Themen