Android 向下一个活动传递多个数据的自定义列表视图

Android 向下一个活动传递多个数据的自定义列表视图,android,listview,Android,Listview,我已经完成了自定义列表视图 每行有6个文本视图和1个图像视图 我所做的是,当按下这个项目时,它就进入了我的第二个活动 但它想要的是将行中的项传递给第二个活动 我不知道如何做,也不知道在列表或适配器中添加到哪里 第二个活动中要做什么 这是我的第一个活动 public class ImageListActivity extends AppCompatActivity { private DatabaseReference mDatabaseRef; private List<ImageUpl

我已经完成了自定义列表视图 每行有6个文本视图和1个图像视图 我所做的是,当按下这个项目时,它就进入了我的第二个活动 但它想要的是将行中的项传递给第二个活动 我不知道如何做,也不知道在列表或适配器中添加到哪里 第二个活动中要做什么

这是我的第一个活动

public class ImageListActivity extends AppCompatActivity {

private DatabaseReference mDatabaseRef;
private List<ImageUpload> imgList;
private ListView lv;
private ImageListAdapter adapter;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_image_list);
    imgList = new ArrayList<>();
    lv = (ListView) findViewById(R.id.listViewImage);
    //Show progress dialog during list image loading
    progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Please wait loading list image...");
    progressDialog.show();

    mDatabaseRef = FirebaseDatabase.getInstance().getReference(ListActivity.FB_Database_Path);



            mDatabaseRef.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    progressDialog.dismiss();

                    //Fetch image data from firebase database
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        //ImageUpload class require default constructor
                        ImageUpload img = snapshot.getValue(ImageUpload.class);
                        imgList.add(img);
                    }


                    //Init adapter
                    adapter = new ImageListAdapter(ImageListActivity.this, R.layout.image_item, imgList);
                    //Set adapter for listview
                    lv.setAdapter(adapter);
                }


                @Override
                public void onCancelled(DatabaseError databaseError) {

                    progressDialog.dismiss();
                }

            });
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Intent myintent = new Intent(view.getContext(), Buy1Activity.class);
            startActivityForResult(myintent, 0);


        }
    });


}
}
这是适配器

public class ImageListAdapter extends ArrayAdapter<ImageUpload> {
private Activity context;
private int resource;
private List<ImageUpload> listImage;

public ImageListAdapter(@NonNull Activity context, @LayoutRes int resource, @NonNull List<ImageUpload> objects) {
    super(context, resource, objects);
    this.context = context;
    this.resource = resource;
    listImage = objects;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();

    View v = inflater.inflate(resource, null);
    TextView tvName = (TextView) v.findViewById(R.id.tvImageName);
    TextView tvModel = (TextView) v.findViewById(R.id.tvImageModel);
    TextView tvBrand = (TextView) v.findViewById(R.id.tvImageBrand);
    TextView tvPrice = (TextView) v.findViewById(R.id.tvImagePrice);
    TextView tvyear = (TextView) v.findViewById(R.id.tvImageYear);
    TextView tvDesc = (TextView) v.findViewById(R.id.tvImageDesc);
    ImageView img = (ImageView) v.findViewById(R.id.imgView);

    tvModel.setText(listImage.get(position).getModel());
    tvName.setText(listImage.get(position).getName());
    tvBrand.setText(listImage.get(position).getBrand());
    tvyear.setText(listImage.get(position).getYear());
    tvDesc.setText(listImage.get(position).getDesc());
    tvPrice.setText(listImage.get(position).getPrice());

    Glide.with(context).load(listImage.get(position).getUrl()).into(img);

    return v;

}

}
试试这个

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        ImageUpload img = adapter.get(position);
        Intent myintent = new Intent(view.getContext(), Buy1Activity.class);
        myintent.putParcelableArrayListExtra("parcel_data", img);
        startActivityForResult(myintent, 0);
    }
});

希望能有帮助

据我所知,您希望传输您单击的列表项的整个对象,即ImageUpload。为此,您可以将ImageUpload模型类创建为Parcelable,然后在您的intent中传递选定的ImageUpload对象,并使用getParcelable从intent中检索它

在列表项上单击:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Intent myintent = new Intent(view.getContext(), Buy1Activity.class);
        myintent.putExtra("selected_image_upload", ((ImageUpload) adapter.getItem(position)));
        startActivityForResult(myintent, 0);
    }
});

您可以从中获得创建类Parcelable的提示

可能是重复的我看到了这个和超过25页的类似主题,都试过了,但我做不到,我不是专家,我只是一个初学者,你可以做链接中提到的每个项目,或者你冷创建一个对象,并通过意图传递它。阅读更多关于如何操作的教程,如:,同时提及您在尝试时遇到的问题,这将帮助我们更好地帮助您。感谢您的帮助,在第二个活动中获取文本视图效果很好,但我无法获取图像抱歉延迟,我相信ImageUpload类具有保存URL的属性。使用getParcelable从intent检索ImageUpload对象后,可以使用getter方法获取图像URL表单对象。并从该url加载图像。
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Intent myintent = new Intent(view.getContext(), Buy1Activity.class);
        myintent.putExtra("selected_image_upload", ((ImageUpload) adapter.getItem(position)));
        startActivityForResult(myintent, 0);
    }
});
ImageUpload imgUploadObj = getIntent().getExtras().getParcelable("selected_image_upload");