0
私はこのコードをRecyclerAdapterで作成しました。私はこのコードが働いており、色がランダムに変化holder.cardView.setCardBackgroundColor(Color.parseColor())
に色の文字列の配列を渡すことによって、ランダムにrecyclerViewのカードの背景色を変更しようとしましたが、その後エラーアプリケーションがメインスレッドであまりにも多くの作業を行っている可能性があります
Skipped 49 frames! The application may be doing too much work on its main thread.
を数秒後にアプリがクラッシュしてlogcatに次のエラーを投げましたここ
は私の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);
}
}
}
はなぜこのエラーが発生しているのか?そして、どうすればそれを修正することができますか?説明の少しは本当に役立つでしょう。