Intent

效果图



activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

    </ListView>
</LinearLayout>

person.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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=".PersonActivity">

    <EditText
        android:id="@+id/edit_name"
        android:layout_width="235dp"
        android:layout_height="48dp"
        android:layout_marginTop="95dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText_age"
        android:layout_width="233dp"
        android:layout_height="52dp"
        android:layout_marginTop="29dp"
        android:ems="10"
        android:inputType="numberDecimal"
        app:layout_constraintStart_toStartOf="@+id/edit_name"
        app:layout_constraintTop_toBottomOf="@+id/edit_name" />

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="307dp"
        android:layout_height="164dp"
        android:layout_marginEnd="41dp"
        android:layout_marginRight="41dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <RadioButton
            android:id="@+id/radiobutton_man"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:checked="true"
            android:text="man" />

        <RadioButton
            android:id="@+id/radiobutton_woman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="woman" />
    </RadioGroup>

    <Button
        android:id="@+id/button_confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="46dp"
        android:layout_marginLeft="46dp"
        android:text="确定"
        app:layout_constraintBottom_toBottomOf="@+id/btn_cancle"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/btn_cancle"
        android:onClick="finishClicked"/>

    <Button
        android:id="@+id/btn_cancle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="52dp"
        android:layout_marginRight="52dp"
        android:layout_marginBottom="150dp"
        android:text="取消"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:onClick="cancleClicked"/>
</android.support.constraint.ConstraintLayout>

MainActivity.java

package com.example.intentdemo;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity  extends AppCompatActivity {

   private ListView listView;
   private List<Person> list_person = new ArrayList<>();
   private ArrayAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.

        listView = findViewById(R.id.id_listview);
        init();
        adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,list_person);

        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MainActivity.this, PersonActivity.class);
                Person person = list_person.get(position);

                intent.putExtra("person1",person);
                intent.putExtra("position",position);

                startActivityForResult(intent,1);
                //startActivity(intent);

            }
        });

    }

   public void init(){
        for(int i=0;i<10;i++){
            Person person = new Person("zyl"+i,20+i,i%2==0?true:false);
            list_person.add(person);
        }
   }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==1){
            if(resultCode == RESULT_OK){
                Person person2 = (Person)data.getSerializableExtra("person2");
                int position = data.getIntExtra("position",0);
               // list_person.get(position) = person2;
                list_person.set(position,person2);
                adapter.notifyDataSetChanged();
            }
        }
    }
}

PersonActivity.java

package com.example.intentdemo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;

public class PersonActivity extends AppCompatActivity {

    EditText editText_name;
    EditText editText_age;
    RadioButton radioButton_man;
    RadioButton radioButton_woman;
    int position;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.person);

        init();
        Intent intent = getIntent();
        Person person1 = (Person) intent.getSerializableExtra("person1");
        position = intent.getIntExtra("position",0);
        editText_name.setText(person1.getName());
        editText_age.setText(person1.getAge()+"");

        radioButton_man.setChecked(person1.isGender());
        radioButton_woman.setChecked(!person1.isGender());
    }


    public void init(){
        editText_name = findViewById(R.id.edit_name);
        editText_age = findViewById(R.id.editText_age);
        radioButton_man = findViewById(R.id.radiobutton_man);
        radioButton_woman = findViewById(R.id.radiobutton_woman);
    }

    public  void cancleClicked(View v){
       finish();
    }
    public void finishClicked(View v){
       Intent intent = new Intent();
       String name = editText_name.getText().toString();
       int age = Integer.valueOf(editText_age.getText().toString());
       boolean gender = radioButton_man.isChecked();

       Person person2 = new Person(name,age,gender);
       intent.putExtra("person2",person2);
       intent.putExtra("position",position);
       setResult(RESULT_OK,intent);
       finish();
    }
}

Person.java

package com.example.intentdemo;

import java.io.Serializable;

public class Person implements Serializable {

    private String name;
    private int age;
    private boolean gender;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }

    public Person(String name, int age, boolean gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isGender() {
        return gender;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }
}

```![](https://img2018.cnblogs.com/blog/1296940/201904/1296940-20190409145206279-53437030.png)
![](https://img2018.cnblogs.com/blog/1296940/201904/1296940-20190409145214677-486632005.png)
posted @ 2019-04-09 14:50  雪隐lys  阅读(241)  评论(0)    收藏  举报