Recycler -Ansicht, die sich nicht entzieht, wenn die Ansicht versteckt istAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Recycler -Ansicht, die sich nicht entzieht, wenn die Ansicht versteckt ist

Post by Anonymous »

Ich habe eine Recycler -Ansicht, in der vier Zahlen angezeigt werden. 1,2,3,4. Wenn ich eine dieser Zahlen auswähle, scheint alles in Ordnung zu sein. Das Problem ist, wenn ich horizontal scrollen und die anderen Zahlen meinen Bildschirm bevölkern: 4,5,6,7. /i.sstatic.net/ou91h.png " /> < /p>

Zustand 1 < /strong> < /p>



State2


In diesem Beispiel scrollen 1 werden beide ausgewählt, wenn nur einer von ihnen ausgewählt werden sollte < /p>


Frage < /strong>: Wie kann ich es so machen, Wenn Sie auf eine der Zahlen klicken, wird die Nummer die Nummer deaktiviert, die auf dem Bildschirm nicht sichtbar ist? p>

public class MyAdapter extends RecyclerView.Adapter{
private String[] days;
private String[] numbers;
SelectionTracker mSelectionTracker;
private static MyAdapter myAdapter;

public MyAdapter(String[] day, String[] number){
days = day;
numbers = number;
setHasStableIds(true);
}

//Set Keys
public void setSelectionTracker(SelectionTracker selectionTracker) {
mSelectionTracker = selectionTracker;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
String dayInit = days[position];
String numberInit = numbers[position];
Long id = getItemId(position);

boolean isSelected = false;
if(mSelectionTracker != null) {
if (mSelectionTracker.isSelected(id)) {
isSelected = true;
}
}

holder.bind(position, id, dayInit, numberInit, isSelected);
}

public static class MyViewHolder extends RecyclerView.ViewHolder{
public TextView dayView, numberView;
public View view;
ScheduleDetails scheduleDetails = new ScheduleDetails();

public MyViewHolder(View itemView){
super(itemView);
view = itemView;
dayView = itemView.findViewById(R.id.day);
numberView = itemView.findViewById(R.id.day_number);

}

void bind(int position, Long key, String dayInit, String numberInit, Boolean isSelected){
scheduleDetails.position = position;
scheduleDetails.identifier = key;

System.out.println("Check: " + position);

dayView.setText(dayInit);
numberView.setText(numberInit);
view.setActivated(isSelected);
}

public ItemDetailsLookup.ItemDetails getItemDetails(@NonNull MotionEvent motionEvent){
return scheduleDetails;
}
}

static class ScheduleDetails extends ItemDetailsLookup.ItemDetails{
int position;
Long identifier;

@Override
public int getPosition() {
return position;
}

@Nullable
@Override
public Long getSelectionKey() { return identifier; }

@Override
public boolean inSelectionHotspot(@NonNull MotionEvent e){
return true;
}
}

// Create new views (invoked by the layout manager)
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_layout, parent, false);

MyViewHolder vh = new MyViewHolder(view);
return vh;
}

@Override
public int getItemCount() {
return days.length;
}

@Override
public long getItemId(int position) {
return position;
}
< /code>

} < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post