如何将数据从一个活动传递到另一个listview活动?

时间:2017-11-14 13:32:51

标签: java android listview

我需要将数据从一个活动传递到另一个活动中的ListView。目前我已经设置了一个TextView来查看第二个活动中的所有细节。但我需要在ListView中查看每个项目的适配器。

MainActivity.java

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;

public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
    String[] place={"Karur","Salem","Namakkal","Trichy","Madurai"};

    EditText Name;
    EditText Email;
    EditText Number;
    Button submit;
    RadioGroup radioGroup;
    RadioButton maleradioButton,femaleradioButton;
    CheckBox BEcheckbox,MEcheckbox;
    Spinner spin;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         spin = (Spinner)findViewById(R.id.spinner);
        spin.setOnItemSelectedListener(this);

        ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_spinner_item, place);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aa);



        Name = (EditText)findViewById(R.id.Name);
        Email = (EditText)findViewById(R.id.Email);
        Number = (EditText)findViewById(R.id.Number);
        submit = (Button)findViewById(R.id.submit);
        radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
      ////  maleradioButton = (RadioButton)findViewById(R.id.maleradioButton);
        femaleradioButton = (RadioButton)findViewById(R.id.femaleradioButton);
        BEcheckbox = (CheckBox)findViewById(R.id.BEcheckBox);
        MEcheckbox = (CheckBox)findViewById(R.id.MEcheckbox);
       final RadioGroup rgroup = (RadioGroup)findViewById(R.id.radioGroup);

        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String spinText = spin.getSelectedItem().toString();
                String name = Name.getText().toString();
                String email = Email.getText().toString();
                String number = Number.getText().toString();
String val="";
String radio;
if (BEcheckbox.isChecked()) {
    val="BE";
} if(MEcheckbox.isChecked()) {
                    val="ME";


                }
                int select=rgroup.getCheckedRadioButtonId();
                maleradioButton=(RadioButton)findViewById(select);
                radio=maleradioButton.getText().toString();
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                intent.putExtra("Name",name);
                intent.putExtra("Email",email);
                intent.putExtra("Number",number);
                intent.putExtra("Degree",val);
                intent.putExtra("Gender",radio);
                intent.putExtra("Place",spinText);

                startActivity(intent);
            }
        });

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

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

    }
}

SecondActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends Activity {

    String Name;
    String Email;
    String Number;
    String Degree;
    String Gender;
    String Place;
    TextView result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        result = (TextView)findViewById(R.id.result);

        Name = getIntent().getExtras().getString("Name");
        Email = getIntent().getExtras().getString("Email");
        Number = getIntent().getExtras().getString("Number");
        Degree = getIntent().getExtras().getString("Degree");
        Gender = getIntent().getExtras().getString("Gender");
        Place = getIntent().getExtras().getString("Place");

        result.setText("Name:"+""+Name +'\n'+"Email"+" "+Email+'\n'+"Number:"+" "+Number+'\n'+"Degree:"+" "+Degree+'\n'+"Gender:"+" "+Gender+'\n'+"Place:"+" "+Place);
    }
}

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="arun.com.project.MainActivity">


    <EditText
        android:id="@+id/Name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/Email"
        android:ems="10"
        android:hint="Enter your Name"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/Email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/Name"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:hint="Enter your Email"
        android:inputType="textEmailAddress" />

    <EditText
        android:id="@+id/Number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/Email"
        android:layout_below="@+id/Email"
        android:ems="10"
        android:hint="Enter your Mobile Number"
        android:inputType="phone" />

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/Number"
        android:id="@+id/radioGroup">


        <CheckBox
            android:id="@+id/BEcheckBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignTop="@+id/radioGroup"
            android:layout_marginTop="74dp"
            android:layout_weight="1"
            android:text="BE" />

        <CheckBox
            android:id="@+id/MEcheckbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="ME" />

        <RadioButton
            android:id="@+id/maleradioButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Male" />

        <RadioButton
            android:id="@+id/femaleradioButton"
            android:layout_width="442dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="Female" />

    </RadioGroup>

    <Button
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="11dp"
        android:text="SUBMIT"
        android:textColor="#ffffff"
        android:background="@color/colorPrimaryDark"/>

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/submit"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="27dp" />


</RelativeLayout>

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="arun.com.project.SecondActivity">

    <TextView
        android:id="@+id/result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="55dp"
        android:layout_marginTop="43dp"
        android:text="TextView"
        android:textColor="#000000"
        android:textSize="16sp"/>
</RelativeLayout>

我刚刚使用单个TextView来查看我在 MainActivity.java 中输入的详细信息。但现在我需要在ListView中显示详细信息(名称,电子邮件,数字等),并在单独的适配器中显示。

1 个答案:

答案 0 :(得分:0)

如果要在ListView行中显示许多信息。为ListView和自定义POJO类创建自定义适配器,以在单个对象中存储多个数据字段。

创建 Info.java

class Info {
    String name;
    String email;

    public Info(String name, String email) {
        this.name = name;
        this.email = email;
    }

    public String getName() { return name; }
    public String getEmail() { return email; }
}

创建 row.xml ,为ListView的单行制作自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/name"
    android:text="Name"/>
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Email"
    android:id="@+id/email"/>
</LinearLayout>

定义适配器以创建行并在行上填充数据。创建 InfoAdapter.java

class InfoAdapter extends BaseAdapter {

    Context context;
    List<Info> data;
    private static LayoutInflater inflater = null;

    public InfoAdapter(Context context, List<Info> data) {
        // TODO Auto-generated constructor stub
        this.context = context;
        this.data = data;
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return data.length;
    }

    @Override
    public Object getItem(int position) {
        return data.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (vi == null)
            vi = inflater.inflate(R.layout.row, null);
        TextView name = (TextView) vi.findViewById(R.id.name);
        TextView email = (TextView) vi.findViewById(R.id.email);
        name.setText(data.get(position).getName());
        email.setText(data.get(position).getEmail());

        return vi;
    }
}

将ListView放在 activity_second.xml 中,并根据需要配置布局。

<ListView
        android:id="@+id/list"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">
</ListView>

SecondActivity.java 里面创建一个ListView实例和数据数组:

listView = (ListView) findViewById(R.id.list);
//Getting extras (Name, Email,..)
listInfo.add(new Info(Name, Email,...); //Create Info object base on extras information

初始化适配器并设置:

InfoAdapter adapter = new InfoAdapter(this, listInfo);
listView.setAdapter(adapter);