我也有2个Adapter类及其Object类:
第一个适配器类是:
public class UpcomingAdpter extends RecyclerView.Adapter<UpcomingAdpter.ItemRowHolder> {
private ArrayList<UpcomingObject> itemList;
private Context context;
public UpcomingAdpter(ArrayList<UpcomingObject> itemList, Context context){
this.itemList = itemList;
this.context = context;
}
@Override
public ItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.upcominglayout, null);
ItemRowHolder mh = new ItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(ItemRowHolder itemRowHolder, int i) {
final String sectionName = itemList.get(i).getDate();
final ArrayList<SingleItemModelForUpcoming> singleSectionItems = itemList.get(i).getNamesList();
final ArrayList<SingleItemforPhoneNumbers> singleSectionItemsForPhoneNumber = itemList.get(i).getPhoneList();
itemRowHolder.date.setText(sectionName);
AdapterForNamesListInUpcoming itemListDataAdapter = new AdapterForNamesListInUpcoming(context, singleSectionItemsForPhoneNumber, singleSectionItems);
AdapterForNamesListInUpcoming itemListDataAdapterSecond = new AdapterForNamesListInUpcoming(context, singleSectionItemsForPhoneNumber, singleSectionItems);
itemRowHolder.recycler_view_list.setHasFixedSize(true);
itemRowHolder.recycler_view_list.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
itemRowHolder.recycler_view_list.setAdapter(itemListDataAdapter);
itemRowHolder.recycler_view_list.setAdapter(itemListDataAdapterSecond);
itemRowHolder.recycler_view_list.setNestedScrollingEnabled(false);
itemRowHolder.recycler_view_list.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("dd","here is me");
}
});
}
@Override
public int getItemCount() {
return (null != itemList ? itemList.size() : 0);
}
public class ItemRowHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected TextView date;
protected RecyclerView recycler_view_list;
public ItemRowHolder(View view) {
super(view);
this.date = (TextView) view.findViewById(R.id.date);
this.recycler_view_list = (RecyclerView) view.findViewById(R.id.recycler_view_list);
view.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String finaldate = date.getText().toString();
Log.d("Date", "now date us "+finaldate);
}
}
}
为此的对象类是:
public class UpcomingObject {
private String Date;
private ArrayList<SingleItemModelForUpcoming> NamesList;
private ArrayList<SingleItemforPhoneNumbers> PhoneList;
public UpcomingObject() {
}
public UpcomingObject(String Date, ArrayList<SingleItemModelForUpcoming> NamesList, ArrayList<SingleItemforPhoneNumbers> PhoneList) {
this.Date = Date;
this.NamesList = NamesList;
this.PhoneList = PhoneList;
}
public String getDate() {
return Date;
}
public void setDate(String date) {
Date = date;
}
public ArrayList<SingleItemModelForUpcoming> getNamesList() {
return NamesList;
}
public void setNamesList(ArrayList<SingleItemModelForUpcoming> namesList) {
NamesList = namesList;
}
public ArrayList<SingleItemforPhoneNumbers> getPhoneList() {
return PhoneList;
}
public void setPhoneList(ArrayList<SingleItemforPhoneNumbers> phoneList) {
PhoneList = phoneList;
}
}
此布局是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:layout_marginLeft="50dp"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="@font/gothic"
android:layout_marginTop="10dp"
android:textColor="#000"
android:text="10-10-2019"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_marginTop="40dp"
android:id="@+id/takedate"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="5dp"
android:layout_marginLeft="20dp"
android:orientation="vertical" />
</RelativeLayout>
第二个适配器类是:
public class AdapterForNamesListInUpcoming extends RecyclerView.Adapter<AdapterForNamesListInUpcoming.SingleItemRowHolder> {
private List<SingleItemModelForUpcoming> itemsList;
private List<SingleItemforPhoneNumbers> itemforPhoneNumbers;
private Context mContext;
public AdapterForNamesListInUpcoming(Context context, List<SingleItemforPhoneNumbers> itemforPhoneNumbers , List<SingleItemModelForUpcoming> itemsList ) {
this.itemsList = itemsList;
this.itemforPhoneNumbers = itemforPhoneNumbers;
this.mContext = context;
}
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.upcomingclientlistlayout, null);
SingleItemRowHolder mh = new SingleItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
SingleItemModelForUpcoming singleItem = itemsList.get(i);
SingleItemforPhoneNumbers singleItemforPhoneNumbers = itemforPhoneNumbers.get(i);
holder.nameofclient.setText(singleItem.getName());
holder.phoneNumber.setText(singleItemforPhoneNumbers.getPhoneNumber());
}
@Override
public int getItemCount() {
return (null != itemsList ? itemsList.size() : 0);
}
public class SingleItemRowHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected TextView nameofclient , phoneNumber, date;
public SingleItemRowHolder(View view) {
super(view);
this.nameofclient = (TextView) view.findViewById(R.id.nameofclient);
this.phoneNumber = (TextView)view.findViewById(R.id.phoneNumber);
view.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent UpcomingDetailPage = new Intent(v.getContext(), com.allwaseet.spaservshop.UpcomingDetailsPage.UpcomingDetailPage.class);
v.getContext().startActivity(UpcomingDetailPage);
String finalPhoneNumber = phoneNumber.getText().toString();
Log.d("PhoneNumber from databse ","phone Number is "+finalPhoneNumber);
SharedPreferences.Editor PhoneNumberEditor;
SharedPreferences PhoneNumberSharedPreference;
PhoneNumberSharedPreference = mContext.getSharedPreferences("SelectedPhoneNumber", Context.MODE_PRIVATE);
PhoneNumberEditor = PhoneNumberSharedPreference.edit();
PhoneNumberEditor.putString("SelectedPhoneNumber",finalPhoneNumber);
PhoneNumberEditor.commit();
Log.d("PhoneNumber from databse ","phone Number is "+finalPhoneNumber);
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.upcominglayout, null, true);
TextView textView = (TextView)view.findViewById( R.id.date );
String finaldate = textView.getText().toString();
Log.d("ss","date is "+finaldate);
SharedPreferences.Editor DateEditor;
SharedPreferences DateSharedPreference;
DateSharedPreference = mContext.getSharedPreferences("DateInUpcoming", Context.MODE_PRIVATE);
DateEditor = DateSharedPreference.edit();
DateEditor.putString("DateInUpcoming",finaldate);
DateEditor.commit();
// return view;
}
}
}
为此的对象类是:
public class SingleItemModelForUpcoming {
private String name;
public SingleItemModelForUpcoming(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
此布局为:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="550dp"
android:layout_marginTop="40dp"
android:layout_height="150dp"
android:layout_marginLeft="50dp"
android:paddingBottom="30dp"
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="560dp"
android:background="@drawable/upcomingandhistorybackground"
android:layout_height="100dp">
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:text="2:30"
android:layout_marginTop="35dp"
android:textSize="25dp"
android:fontFamily="@font/gothic"
android:layout_marginLeft="20dp"
android:textColor="#fff"
android:layout_height="wrap_content" />
<View
android:layout_width="1dp"
android:layout_marginLeft="80dp"
android:layout_marginTop="15dp"
android:layout_height="70dp"
android:background="#fff"
/>
<TextView
android:id="@+id/nameofclient"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name"
android:layout_marginLeft="100dp"
android:layout_marginTop="35dp"
android:textColor="#fff"
android:fontFamily="@font/gothic"
android:textSize="20dp"/>
<!--Not in use-->
<TextView
android:id="@+id/phoneNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:layout_marginLeft="100dp"
android:layout_marginTop="4dp"
android:textColor="#fff"
android:text="rr"
android:fontFamily="@font/gothic"
android:textSize="20dp"/>
<!--Not in use-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:layout_marginLeft="495dp"
android:src="@drawable/rightarrow"/>
现在,我想要的是,当我单击第二个适配器类中存在的项目时,我想获取第一个适配器类中指定的日期。我怎样才能做到这一点。
例如:当我单击粉红色部分或单元格时,我也应该获得日期。但是问题是在另一个适配器类中指定了日期
任何帮助将不胜感激。
使用此
public class AdapterForNamesListInUpcoming extends RecyclerView.Adapter<AdapterForNamesListInUpcoming.SingleItemRowHolder> {
private List<SingleItemModelForUpcoming> itemsList;
private List<SingleItemforPhoneNumbers> itemforPhoneNumbers;
private ArrayList<UpcomingObject> item;
private Context mContext;
public AdapterForNamesListInUpcoming(Context context,ArrayList<UpcomingObject> item, List<SingleItemforPhoneNumbers> itemforPhoneNumbers , List<SingleItemModelForUpcoming> itemsList ) {
this.itemsList = itemsList;
this.item = item;
this.itemforPhoneNumbers = itemforPhoneNumbers;
this.mContext = context;
}
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.upcomingclientlistlayout, null);
SingleItemRowHolder mh = new SingleItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
SingleItemModelForUpcoming singleItem = itemsList.get(i);
SingleItemforPhoneNumbers singleItemforPhoneNumbers = itemforPhoneNumbers.get(i);
holder.nameofclient.setText(singleItem.getName());
holder.phoneNumber.setText(singleItemforPhoneNumbers.getPhoneNumber());
}
@Override
public int getItemCount() {
return (null != itemsList ? itemsList.size() : 0);
}
public class SingleItemRowHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected TextView nameofclient , phoneNumber, date;
public SingleItemRowHolder(View view) {
super(view);
this.nameofclient = (TextView) view.findViewById(R.id.nameofclient);
this.phoneNumber = (TextView)view.findViewById(R.id.phoneNumber);
view.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// get data of first adapter
UpcomingObject up = item.get(getAdapterPosition);
Intent UpcomingDetailPage = new Intent(v.getContext(), com.allwaseet.spaservshop.UpcomingDetailsPage.UpcomingDetailPage.class);
v.getContext().startActivity(UpcomingDetailPage);
String finalPhoneNumber = phoneNumber.getText().toString();
Log.d("PhoneNumber from databse ","phone Number is "+finalPhoneNumber);
SharedPreferences.Editor PhoneNumberEditor;
SharedPreferences PhoneNumberSharedPreference;
PhoneNumberSharedPreference = mContext.getSharedPreferences("SelectedPhoneNumber", Context.MODE_PRIVATE);
PhoneNumberEditor = PhoneNumberSharedPreference.edit();
PhoneNumberEditor.putString("SelectedPhoneNumber",finalPhoneNumber);
PhoneNumberEditor.commit();
Log.d("PhoneNumber from databse ","phone Number is "+finalPhoneNumber);
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.upcominglayout, null, true);
TextView textView = (TextView)view.findViewById( R.id.date );
String finaldate = textView.getText().toString();
Log.d("ss","date is "+finaldate);
SharedPreferences.Editor DateEditor;
SharedPreferences DateSharedPreference;
DateSharedPreference = mContext.getSharedPreferences("DateInUpcoming", Context.MODE_PRIVATE);
DateEditor = DateSharedPreference.edit();
DateEditor.putString("DateInUpcoming",finaldate);
DateEditor.commit();
// return view;
}
}
}
您可以使用Intent在按钮或任何项目的单击事件上将数据从一个类传递到另一类,因此您可以做的是将第一类的数据存储到Shared preference中,然后将数据传递到键值对的形式如下:
public class AdapterForNamesListInUpcoming extends
RecyclerView.Adapter<AdapterForNamesListInUpcoming.SingleItemRowHolder> {
private List<SingleItemModelForUpcoming> itemsList;
private List<SingleItemforPhoneNumbers> itemforPhoneNumbers;
private ArrayList<UpcomingObject> item;
private Context ctx;
public AdapterForNamesListInUpcoming(Context
context,ArrayList<UpcomingObject> item, List<SingleItemforPhoneNumbers>
itemforPhoneNumbers , List<SingleItemModelForUpcoming> itemsList ) {
this.itemsList = itemsList;
this.item = item;
this.itemforPhoneNumbers = itemforPhoneNumbers;
this.ctx = context;
}
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v =
LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.upcomingclientlistlayout, null);
SingleItemRowHolder rh = new SingleItemRowHolder(v);
return rh;
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
SingleItemModelForUpcoming singleItem = itemsList.get(i);
SingleItemforPhoneNumbers singleItemforPhoneNumbers =
itemforPhoneNumbers.get(i);
holder.nameofclient.setText(singleItem.getName());
holder.phoneNumber.setText(singleItemforPhoneNumbers.getPhoneNumber());
}
@Override
public int getItemCount() {
return (null != itemsList ? itemsList.size() : 0);
}
public class SingleItemRowHolder extends RecyclerView.ViewHolder implements
View.OnClickListener {
protected TextView nameofclient , phoneNumber, date;
public SingleItemRowHolder(View view) {
super(view);
this.nameofclient = (TextView) view.findViewById(R.id.nameofclient);
this.phoneNumber = (TextView)view.findViewById(R.id.phoneNumber);
view.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// get data of first adapter
UpcomingObject up = item.get(getAdapterPosition);
Intent UpcomingDetailPage = new Intent(v.getContext(),
com.allwaseet.spaservshop.UpcomingDetailsPage.UpcomingDetailPage.class);
v.getContext().startActivity(UpcomingDetailPage);
String finalPhoneNumber = phoneNumber.getText().toString();
Log.d("PhoneNumber from databse ","phone Number is "+finalPhoneNumber);
SharedPreferences.Editor PhoneNumberEditor;
SharedPreferences PhoneNumberSharedPreference;
PhoneNumberSharedPreference =
ctx.getSharedPreferences("SelectedPhoneNumber", Context.MODE_PRIVATE);
PhoneNumberEditor = PhoneNumberSharedPreference.edit();
PhoneNumberEditor.putString("SelectedPhoneNumber",finalPhoneNumber);
PhoneNumberEditor.commit();
Log.d("PhoneNumber from databse ","phone Number is "+finalPhoneNumber);
LayoutInflater inflater = LayoutInflater.from(ctx);
View view = inflater.inflate(R.layout.upcominglayout, null, true);
TextView textView = (TextView)view.findViewById( R.id.date );
String finaldate = textView.getText().toString();
Log.d("ss","date is "+finaldate);
SharedPreferences.Editor DateEditor;
SharedPreferences DateSharedPreference;
DateSharedPreference = ctx.getSharedPreferences("DateInUpcoming",
Context.MODE_PRIVATE);
DateEditor = DateSharedPreference.edit();
DateEditor.putString("DateInUpcoming",finaldate);
DateEditor.commit();
// return view;
}
}
}