我有一个带有卡片和微调框的recyclerview,需要将微调框内选择的值发送给下一个活动以计算估计价格。我在活动中有一个不是recyclerview的按钮,它将带我到需要这些值的下一个活动。因此,当我单击此按钮时,我需要它来收集数据并将其发送到下一个活动,我该如何实现。
我附上一张照片。红色箭头(我在下一个活动中需要的数据),蓝色箭头(按下按钮将我带到下一个活动)
FileAdapter.java
public class FileAdapter extends RecyclerView.Adapter<FileAdapter.FileViewHolder> {
private ArrayList<FileItem> mFileList;
private OnItemClickListener mListener;
private static Context context;
private static String[] orders;
private static final String TAG = FileAdapter.class.getSimpleName();
public FileAdapter(ArrayList<FileItem> fileList) {
mFileList = fileList;
}
public interface OnItemClickListener {
void onDeleteClick(int position);
void onViewClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
public static class FileViewHolder extends RecyclerView.ViewHolder {
public ImageView mImageView, mDeleteImage;
public MaterialButton mviewPDFButton, addButton,minusButton;
public MaterialTextView mfileNameTextView;
private MaterialTextView mcopiesText;
private Spinner printColorSpinner;
private FileViewHolder(@NonNull View itemView, final OnItemClickListener listener) {
super(itemView);
addButton = itemView.findViewById(R.id.increaseButton);
minusButton = itemView.findViewById(R.id.reduceButton);
mcopiesText = itemView.findViewById(R.id.copiesNumberText);
printColorSpinner = itemView.findViewById(R.id.printColorSpinner);
printColorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int
position, long id) {
// On selecting a spinner item
String item = parent.getItemAtPosition(position).toString();
Log.e(TAG,item);
}
}
}
@NonNull
@Override
public FileViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.file_items, parent, false);
FileViewHolder fvh = new FileViewHolder(v, mListener);
Log.i(TAG, "onCreateViewHolder Invoked");
return fvh;
}
@Override
public void onBindViewHolder(@NonNull FileViewHolder holder, int position) {
long startTime = System.currentTimeMillis();
FileItem currentItem = mFileList.get(position);
holder.mImageView.setImageResource(currentItem.getImageResource());
holder.mfileNameTextView.setText(currentItem.getFileNameText());
holder.mcopiesText.setText(String.valueOf(mFileList.get(position).getCount()));
holder.addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mFileList.get(position).setCount(mFileList.get(position).getCount()+1);
holder.mcopiesText.setText(String.valueOf(mFileList.get(position).getCount()));
Log.e(TAG, (String) holder.mcopiesText.getText());
orders[6]=(String) holder.mcopiesText.getText();
}
});
holder.minusButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int count = Integer.parseInt((String) holder.mcopiesText.getText());
if (count>=1) {
mFileList.get(position).setCount(mFileList.get(position).getCount()-1);
holder.mcopiesText.setText(String.valueOf(mFileList.get(position).getCount()));
Log.e(TAG, (String) holder.mcopiesText.getText());
orders[6]=(String) holder.mcopiesText.getText();
}
}
});
Log.e(TAG, (String) holder.mcopiesText.getText());
}
}
QuickprintActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quickprint);
storage = FirebaseStorage.getInstance();
fileChooser();
createFileList();
buildRecyclerView();
findMerchantTextView = findViewById(R.id.button_find_merchant);
findMerchantTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(QuickprintActivity.this,FindMerchantsActivity.class);
startActivity(i);
}
});
}
public void insertItem(int position, String fName) {
mFileList.add(position, new FileItem(R.drawable.ic_account_circle_black_24dp, fName));
mRecyclerView.scrollToPosition(0);
mAdapter.notifyItemInserted(position);
}
public void removeItem(int position) {
mFileList.remove(position);
mAdapter.notifyItemRemoved(position);
}
private void createFileList() {
mFileList = new ArrayList<>();
}
private void buildRecyclerView() {
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mlayoutManager = new LinearLayoutManager(this);
mAdapter = new FileAdapter(mFileList);
mRecyclerView.setLayoutManager(mlayoutManager);
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new FileAdapter.OnItemClickListener() {
@Override
public void onDeleteClick(int position) {
removeItem(position);
Log.e(TAG, "POSITION" + position);
}
@Override
public void onViewClick(int position) {
openPDF();
Log.e(TAG, "CLICKED");
}
});
}
使类FileItem实现Parcelable接口。然后使用putParcelableArrayListExtra
将该项目列表放入意图中。例如:
i.putParcelableArrayListExtra("file_list", new ArrayList<>(mFileList));
然后在第二个活动中,从意图中检索列表:
getIntent().getParcelableArrayListExtra<FileItem>("file_list");