![](/img/trans.png)
[英]How to pass selected listview item to another listview in the next activity
[英]How can I get the selected check item in the listView and pass the value to next activity?
-在主要活動中
lodgingAdapter.setOnItemClickListener( new LodgingAdapter.ClickListener() {
public void onItemClick(int position, View v) {
Intent intent = new Intent(FavouriteLodging.this, ViewFavouriteDetails.class);
intent.putExtra("UserID", getIntent().getStringExtra("UserID"));
intent.putExtra("LodgingID", ll.get(position).getLodgingId());
startActivity(intent);
}
@Override
public boolean onItemLongClick(int position, View v) {
return true;
}
-CurrentSelectedItems沒有添加項目。
@Override
public void onItemCheck(Lodging item) {
currentSelectedItems.add(item);
}
@Override
public void onItemUncheck(Lodging item) {
currentSelectedItems.add(item);
}
});
-我的適配器
公共類LodgingAdapter擴展了RecyclerView.Adapter {
private List<Lodging> ll;
private static ClickListener clickListener;
private static int CHECKED_BOX_MAXIMUM = 0;
public interface ClickListener {
void onItemClick(int position, View v);
boolean onItemLongClick(int position, View v);
void onItemCheck(Lodging item);
void onItemUncheck(Lodging item);
}
@NonNull
private ClickListener onItemCheckListener;
private final ClickListener onItemClick;
public LodgingAdapter(List<Lodging> LodgingList) {
ll = LodgingList;
this.onItemClick = onItemCheckListener;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener,CompoundButton.OnCheckedChangeListener{
public TextView title;
public TextView price;
public TextView type;
public ImageView picture;
public CheckBox cbBox;
public ViewHolder(View v) {
super(v);
v.setOnClickListener(this);
v.setOnLongClickListener(this);
title = v.findViewById(R.id.titleTv);
price = v.findViewById(R.id.priceTv);
type = v.findViewById(R.id.lodgingTypeTv);
picture = v.findViewById(R.id.lodgingPicIv);
cbBox = v.findViewById(R.id.cbCompare);
cbBox.setOnCheckedChangeListener(this);
}
public void setOnClickListener(View.OnClickListener onClickListener) {
itemView.setOnClickListener(onClickListener);
}
public boolean onLongClick(View view) {
clickListener.onItemLongClick(getAdapterPosition(), view);
return true;
}
@Override
public void onClick(View view) {
clickListener.onItemClick(getAdapterPosition(), view);
}
如果單擊該復選框,則為CHECKED_BOX_MAXIMUM ++,否則為CHECKED_BOX_MAXIMUM--;如果單擊了兩個復選框,則其他復選框將不可單擊。
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()){
case R.id.cbCompare :
if(isChecked == true){
CHECKED_BOX_MAXIMUM++;
}else{
CHECKED_BOX_MAXIMUM--;
}if (isChecked && CHECKED_BOX_MAXIMUM > 2) {
cbBox.setChecked(false);
CHECKED_BOX_MAXIMUM--;
}
}
}
}
public void setOnItemClickListener(ClickListener clickListener) {
LodgingAdapter.clickListener = clickListener;
}
@Override
public void onBindViewHolder(final LodgingAdapter.ViewHolder holder, int position) {
final Lodging l = ll.get(position);
holder.title.setText(l.getTitle());
holder.price.setText("RM" + String.format("%.2f", l.getPrice()));
holder.type.setText(l.getLodgingType());
(holder).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
(holder).cbBox.setChecked(!(holder).cbBox.isChecked());
if ((holder).cbBox.isChecked()) {
onItemClick.onItemCheck(l);
} else {
onItemClick.onItemUncheck(l);
}
}
});
Glide.with(holder.itemView.getContext())
.load(l.getImage())
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.centerCrop()
.into(holder.picture);
}
}
在適配器類中,創建一個返回所選項目列表的函數。
然后在活動中單擊菜單項時調用該函數,在此對返回列表的大小進行比較> = 2,如果為true,則如函數SelectedItem()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.