我有一个日期 - 时间选择页面。其中有4个RecyclerViews(日期,上午时间,下午时间,晚上时间)。在onClick的日期的基础上,其他3个recyclerViews被填充。问题在于选择时间。由于有三个回收站视图,我希望一个回收站视图的点击项目(例如:MorningTime)将之前点击的其他回收站视图项目(下午,晚上)的值更改回未选中。onClick其他RecyclerView项目中的一个RecyclerView更改UI的项目
目前,它是如[这] [] 1
我只想要一个时间,总被选中。
//PickTimeAdapter.java
public class PickTimeAdapter extends RecyclerView.Adapter<PickTimeAdapter.MyViewHolder> {
private List<Time> timeList;
private Context context;
private OnPickTimeClickListener listener;
LayoutInflater inflter;
private int check = 0;
private int selectedPosition = -1;
private PickTimeNoonAdapter pickTimeNoonAdapter;
private PickTimeEveningAdapter pickTimeEveningAdapter;
public interface OnPickTimeClickListener {
void onTimeClick(String time);
}
public PickTimeAdapter() {
this.timeList = new ArrayList<>();
}
public PickTimeAdapter(int check, List<Time> time_slots) {
this.check = check;
this.timeList = time_slots;
}
public PickTimeAdapter(Context context, List<Time> time_slots, OnPickTimeClickListener listener, int check) {
this.context = context;
this.timeList = time_slots;
this.listener = listener;
this.check = check;
inflter = (LayoutInflater.from(context));
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView tv_time_item;
LinearLayout ll_time;
public MyViewHolder(View view) {
super(view);
tv_time_item = (TextView) view.findViewById(R.id.tv_time_item);
ll_time = (LinearLayout) view.findViewById(R.id.ll_time);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.time_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
final Time time = timeList.get(position);
holder.tv_time_item.setText(time.getTime());
/*if (time.getAvailable() == 1) {
holder.tv_time_item.setBackgroundResource(R.drawable.gridview_text_box);
holder.tv_time_item.setClickable(true);
} else {
holder.tv_time_item.setBackgroundResource(R.color.colorThemeBlack);
holder.tv_time_item.setClickable(false);
}*/
holder.ll_time.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// holder.tv_time_item.setBackgroundResource(R.color.colorPink);
selectedPosition = position;
if (check == 1) {
listener.onTimeClick(time.getFullTime());
//String value=String.valueOf(getItem(position));
}
notifyItemChanged(position);
notifyDataSetChanged();
}
});
if (selectedPosition == position && check == 1) {
Toast.makeText(getApplicationContext(), time.getTime(), Toast.LENGTH_SHORT).show();
holder.ll_time.setBackgroundResource(R.color.colorPink);
Log.d("timeposition", String.valueOf(time.getFullTime()));
} else {
holder.ll_time.setBackgroundResource(R.drawable.gridview_text_box);
check=1;
}
}
@Override
public int getItemCount() {
return timeList.size();
}
public Object getItem(int i) {
return timeList.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
}
//PickTime.java
private void populateTimes(List<Part> parts) {
final ArrayList<Time> timeMorning = new ArrayList<>();
final ArrayList<Time> timeAfternoon = new ArrayList<>();
final ArrayList<Time> timeEvening = new ArrayList<>();
for (Part part : parts) {
if (part.getName().equals("Morning")) {
for (Time time : part.getTime()) {
timeMorning.add(time);
Log.d("populateTimesMorning: ", time.getFullTime());
}
}
if (part.getName().equals("Afternoon")) {
for (Time time : part.getTime()) {
timeAfternoon.add(time);
Log.d("populateTimesNoon: ", time.getFullTime());
}
}
if (part.getName().equals("Evening")) {
for (Time time : part.getTime()) {
timeEvening.add(time);
Log.d("populateTimesEve: ", time.getFullTime());
}
}
if (!timeMorning.isEmpty()) {
rl_morning.setVisibility(View.VISIBLE);
pickTimeAdapter = new PickTimeAdapter(PickDateTime.this, (ArrayList) timeMorning, new PickTimeAdapter.OnPickTimeClickListener() {
@Override
public void onTimeClick(String time) {
SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("DEVICE_PREFS", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("time", time);
editor.apply();
editor.commit();
Log.d("fulltime", sharedPref.getString("time", "empty"));
pickTimeNoonAdapter.notifyDataSetChanged();
pickTimeEveningAdapter.notifyDataSetChanged();
}
}, 1);
rv_morning.setAdapter(pickTimeAdapter);
pickTimeAdapter.notifyDataSetChanged();
} else {
rl_morning.setVisibility(View.GONE);
}
if (!timeAfternoon.isEmpty()) {
rl_afternoon.setVisibility(View.VISIBLE);
PickTimeNoonAdapter pickTimeNoonAdapter = new PickTimeNoonAdapter(PickDateTime.this, (ArrayList) timeAfternoon, new PickTimeNoonAdapter.OnPickTimeNoonClickListener() {
@Override
public void onTimeClick(String time) {
SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("DEVICE_PREFS", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("time", time);
editor.apply();
editor.commit();
Log.d("timeposition", sharedPref.getString("time", "empty"));
pickTimeAdapter.notifyDataSetChanged();
pickTimeEveningAdapter.notifyDataSetChanged();
}
}, 1);
rv_afternoon.setAdapter(pickTimeNoonAdapter);
pickTimeNoonAdapter.notifyDataSetChanged();
} else {
rl_afternoon.setVisibility(View.GONE);
}
if (!timeEvening.isEmpty()) {
rl_evening.setVisibility(View.VISIBLE);
PickTimeEveningAdapter pickTimeEveningAdapter = new PickTimeEveningAdapter(PickDateTime.this, (ArrayList) timeEvening, new PickTimeEveningAdapter.OnPickTimeEveningClickListener() {
@Override
public void onTimeClick(String time) {
SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("DEVICE_PREFS", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("time", time);
editor.apply();
editor.commit();
Log.d("fulltime", sharedPref.getString("time", "empty"));
pickTimeAdapter.notifyDataSetChanged();
pickTimeNoonAdapter.notifyDataSetChanged();
}
}, 1);
rv_evening.setAdapter(pickTimeEveningAdapter);
pickTimeEveningAdapter.notifyDataSetChanged();
} else {
rl_evening.setVisibility(View.GONE);
}
}
}
不工作。还是一样的结果。 – Sonal