[英]How to access an arrayList from an adapter to an activity?
我在適配器中創建了一個方法。 在這種方法中,我有一個arraylist。 我想在一個活動中訪問這個arrayList。 我怎樣才能做到這一點?
適配器:
public class InviteAdapter extends RecyclerView.Adapter<InviteAdapter.MyViewHolder> {
private ArrayList<Contact> contactArrayList;
private Context mContext;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView name;
private CheckBox checkBox;
public MyViewHolder(View view) {
super(view);
name = (TextView) view.findViewById(R.id.textContactName);
checkBox = (CheckBox) view.findViewById(R.id.checkBox);
}
}
public InviteAdapter(Context context, ArrayList<Contact> contactArrayList) {
this.contactArrayList = contactArrayList;
this.mContext = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.invite_contact_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Contact contact = contactArrayList.get(position);
holder.name.setText(contact.getmFullName());
holder.checkBox.setChecked(contact.getSelected());
}
@Override
public int getItemCount() {
return contactArrayList.size();
}
public void toggleContactsSelection( boolean isSelected ) {
for( Contact contact : contactArrayList ) {
contact.setSelected(isSelected);
invite(contact);
}
notifyDataSetChanged(); // OR you can use notifyItemRangeChanged - which ever suits your needs
}
public void invite(Contact contact)
{
ArrayList<Invitation> invitationArrayList = new ArrayList<>();
SharedPreferences sharedpreferences = mContext.getSharedPreferences("UserId", Context.MODE_PRIVATE);
String mUserId = sharedpreferences.getString("userId","");
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm", Locale.ENGLISH);
String date = df.format(Calendar.getInstance().getTime());
Invitation invitation = new Invitation();
invitation.setSender_id(mUserId);
invitation.setDate(date);
invitation.setInvitee_no(contact.getmMobileNo());
invitation.setStatus("0");
invitation.setUser_name(contact.getmUserName());
invitationArrayList.add(invitation);
}
}
我想從適配器的邀請方法訪問邀請數組列表。
活動:
public class InviteContactsActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private InviteAdapter mAdapter;
private ArrayList<Contact> mContactList;
private ContactTableHelper mContactDb;
private ArrayList<Invitation> invitationArrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_invite_contacts);
final ImageView selectAll = (ImageView)findViewById(R.id.imageMenu);
selectAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popup = new PopupMenu(InviteContactsActivity.this,selectAll);
popup.getMenuInflater().inflate(R.menu.pop_up_menu, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
mAdapter.toggleContactsSelection(true); //Selects all contacts
return true;
}
});
popup.show();
}
});
ImageView sendInvites = (ImageView)findViewById(R.id.imageSelect);
sendInvites.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Gson gson=new Gson();
String toServer = gson.toJson(
Collections.singletonMap("invitations", invitationArrayList)
);
new SendMultipleInvitesAsyncTask(InviteContactsActivity.this).execute(toServer);
}
});
mContactDb = new ContactTableHelper(InviteContactsActivity.this);
mContactList = mContactDb.getAllContacts();
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(InviteContactsActivity.this);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new InviteAdapter(InviteContactsActivity.this, mContactList);
mRecyclerView.setAdapter(mAdapter);
}
}
我想從適配器獲取邀請arraylist到sendInvite圖像視圖的onClickListener。
我怎樣才能做到這一點? 謝謝..
在適配器中編寫一個get方法,然后從您的活動中調用它。
public ArrayList<Object> getArrayList(){
return yourArrayList;
}
在你的活動中你可以得到這個,你的yourAdapterObject.getArrayList();
您還可以使用interface將數據從adpater類發送到活動。 它在下面的鏈接中得到了很好的描述。
創建ivitearraylist作為公眾,並通過adpater訪問活動。
ArrayList<Invitation> invitationArrayList = new ArrayList<>();
public void invite(Contact contact)
{
SharedPreferences sharedpreferences = mContext.getSharedPreferences("UserId", Context.MODE_PRIVATE);
String mUserId = sharedpreferences.getString("userId","");
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm", Locale.ENGLISH);
String date = df.format(Calendar.getInstance().getTime());
Invitation invitation = new Invitation();
invitation.setSender_id(mUserId);
invitation.setDate(date);
invitation.setInvitee_no(contact.getmMobileNo());
invitation.setStatus("0");
invitation.setUser_name(contact.getmUserName());
invitationArrayList.add(invitation);
}
活動代碼:訪問invitationArrayList作為adapter.invitationArrayList。
ImageView sendInvites = (ImageView)findViewById(R.id.imageSelect);
sendInvites.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Gson gson=new Gson();
String toServer = gson.toJson(
Collections.singletonMap("invitations", mAdpater.invitationArrayList)
);
new SendMultipleInvitesAsyncTask(InviteContactsActivity.this).execute(toServer);
}
});
它可能對你有幫助:)
快樂編碼:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.