J'utilise recyclerView.I essayer de changer la couleur d'arrière-plan article cliquez avec le fichier selector.xmlchangement RecyclerView fond élément sélectionné et la couleur du texte
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/trains_vagon_selected_departure" android:state_pressed="true" />
<item android:drawable="@drawable/trains_vagon_selected_departure" android:state_focused="true" />
<item android:drawable="@drawable/trains_vagon_selected_white"/>
Ceci est mon code adaptateur
public class TrainsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public ArrayList<Train> trains;
public Context context;
private LayoutInflater inflater;
private String statusString = "";
public class GenericViewHolder extends RecyclerView.ViewHolder {
public TextView trainTime;
public LinearLayout vagoncontainer;
private ImageView statusImageView;
public GenericViewHolder(View view) {
super(view);
trainTime = (TextView) view.findViewById(R.id.train_time);
statusImageView = (ImageView) view.findViewById(R.id.departure_next_img);
vagoncontainer = (LinearLayout) view.findViewById(R.id.vagon_container);
}
}
public TrainsAdapter(Context context, ArrayList<Train> trains, String statusString) {
this.context = context;
this.trains = trains;
inflater = LayoutInflater.from(context);
this.statusString = statusString;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.trains_adapter_item, parent, false);
GenericViewHolder holder = new GenericViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if (holder instanceof GenericViewHolder) {
final GenericViewHolder genericViewHolder = (GenericViewHolder) holder;
genericViewHolder.vagoncontainer.removeAllViews();
Train train = trains.get(position);
if (statusString.equals("departure"))
genericViewHolder.statusImageView.setImageResource(R.mipmap.departure_icon);
else
genericViewHolder.statusImageView.setImageResource(R.mipmap.return_icon);
ArrayList<Vagons> vagons = train.getVagons();
for (int i = 0; i < vagons.size(); i++) {
if (vagons.get(i).getEnable().equals("1")) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
final LinearLayout vagonView = (LinearLayout) layoutInflater.inflate(R.layout.trains_vagon_child, null);
genericViewHolder.vagoncontainer.setBackgroundColor(Color.WHITE);
RelativeLayout relativeLayout = (RelativeLayout) vagonView.findViewById(R.id.selected_layout);
if (statusString.equals("departure"))
relativeLayout.setBackgroundResource(R.drawable.recyclerview_selected_departure);
else
relativeLayout.setBackgroundResource(R.drawable.recyclerview_selected_returned);
TextView vagonClassName = (TextView) vagonView.findViewById(R.id.vagon_class_name);
TextView vagonClassPrice = (TextView) vagonView.findViewById(R.id.vagon_class_price);
vagonClassName.setText(vagons.get(i).getName());
vagonClassPrice.setText(vagons.get(i).getAmount());
genericViewHolder.vagoncontainer.addView(vagonView);
}
}
genericViewHolder.trainTime.setText(train.getDeparture());
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemCount() {
return trains.size();
}
public Train getItem(int position) {
return trains.get(position);
}
@Override
public int getItemViewType(int position) {
return position;
}
} J'ai deux questions. 1) Lorsque je cours le premier élément dans recyclerView également sélectionné automatiquement.Pourquoi? Comment puis-je résoudre ce problème? 2) Est-il possible de changer la couleur du texte à l'intérieur du fichier sélecteur xml? Je sais comment changer l'arrière-plan de recyclerView et la couleur du texte par position, mais pour le moment, chaque élément par position a des tableaux et j'y ajoute ma position et j'essaie de changer le fond et la couleur du texte. moyenne vue vagonView) remercie tout le monde
Vous avez raison, mais quand je l'ai écrit faux par défaut, puis concentrez ne fonctionne pas dans tous les temps @Hasmukh kachhatiya – BekaKK
alors vous devez essayer 'state_pressed = « true »' –
Je l'ai essayé et la première fois le premier élément sélectionné automatiquement @Hasmukh kachhatiya – BekaKK