如何从 arrayadapter 获取值以将其传递给另一个 activity

How can I get value from an arrayadapter to pass it another activity

在这里,我试图将从微调器(数组适配器)获取的值发送到另一个 activity。我使用 json 填充微调器,我的微调器如下所示。

ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, villageList);
        spinner_village.setAdapter(adp);

        spinner_village.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                try {
                    JSONObject villageObject = arrayList.get(position);
                    String villageId = villageObject.getString("id");
                    String villageName = villageObject.getString("name");
                    String villageCode = villageObject.getString("village_code");

                    Toast.makeText(Region.this, villageCode, Toast.LENGTH_SHORT).show();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

现在我正在尝试获取 "villageCode" 到我的创建方法,以便我可以将此值传递给我的另一个 activity。到目前为止我所做的是

        spinner_next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Region.this, Participant_Details.class)
                    .putExtra("catment_code", **-----**);
            Region.this.startActivity(intent);
            Region.this.finish();
        }
    })

putextra 出错。我该如何解决它或者问题是什么。

您可以将字符串 villageCode 设置为全局变量(您可以通过在 class 级别声明它来使变量成为全局变量 它不应该在任何方法中您的 class) 然后在 onClick 方法中提取字符串的值。像这样:

    spinner_next.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(Region.this, Participant_Details.class)
                .putExtra("catment_code", villageCode); //the value is being set here
        Region.this.startActivity(intent);
        Region.this.finish();
    }
})