通讯录小案例

一、图片效果图

  (1).点击添加按钮,跳转到第二个页面,输入姓名、性别、号码,点击提交,添加到第一个页面中。

(2).在第一个页面中,选择其中一个item向左滑动,显示删除,点击删除,删除当前信息。

(3).在第一个页面中,选择其中一个item点击,则携带数据跳转到第二个页面中,修改后提交,更改第一个页面信息。

(4).在一个页面中,点击发信息,则携带电话号码进入发信息界面,点击打电话,则携带电话号码进入打电话界面



二、布局

activity_main布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#8B8B83">

    <LinearLayout
        android:id="@+id/ll_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimaryDark"
        android:padding="10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="好友"
            android:textSize="20sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <TextView
            android:id="@+id/tv_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="添加"
            android:textSize="20sp" />
    </LinearLayout>

    <ListView
        android:id="@+id/lv_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/ll_title"></ListView>
</RelativeLayout>

activity_add布局

<?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:background="#8B8B83"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimaryDark"
        android:gravity="center_vertical"
        android:padding="10dp">

        <TextView
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="返回"
            android:textSize="24sp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <TextView
            android:id="@+id/confirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="提交"
            android:textSize="24sp" />
    </LinearLayout>

    <ImageView
        android:id="@+id/iv_touxiang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="20dp"
        android:src="@mipmap/touxiang" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名: " />

        <EditText
            android:id="@+id/et_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:padding="5dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别: " />

        <RadioGroup
            android:id="@+id/rg_gender"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp">

            <RadioButton
                android:id="@+id/rb_man"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="男" />

            <RadioButton
                android:id="@+id/rb_wom"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女" />
        </RadioGroup>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="号码: " />

        <EditText
            android:id="@+id/et_number"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>
</LinearLayout>

item_main布局

<?xml version="1.0" encoding="utf-8"?>
<com.atguigu.listviewadapter.util.SlideLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="70dp">

    <include
        android:id="@+id/item_content"
        layout="@layout/item_adapter" />

    <include
        android:id="@+id/item_delete"
        layout="@layout/item_delete" />

</com.atguigu.listviewadapter.util.SlideLayout>

item_adapter布局

<?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="70dp"
    android:layout_centerVertical="true"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    android:padding="5dp">

    <ImageView
        android:id="@+id/item_touxiang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="10dp"
        android:src="@mipmap/touxiang" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:orientation="vertical">

        <TextView
            android:id="@+id/item_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="name" />

        <TextView
            android:id="@+id/item_gender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="gender" />

        <TextView
            android:id="@+id/item_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="number" />
    </LinearLayout>

    <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:text="发信息" />

    <Button
        android:id="@+id/call"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:text="打电话" />

</LinearLayout>

item_delete布局

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:background="#ff0000"
    android:gravity="center"
    android:text="删除"
    android:textSize="25sp"
    android:padding="5dp"
    android:textColor="#ffffff"/>

三、代码

自定义控件代码

package com.atguigu.listviewadapter.util;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.Scroller;

/**
 * 自定义控件,侧滑菜单item
 */

public class SlideLayout extends FrameLayout {
    private View contentView;
    private View deleteView;

    /**
     * 滚动器
     */
    private Scroller scroller;
    /**
     * ContentView的宽
     */
    private int contentWidth;
    private int deleteWidth;
    private int viewHeight; //他们的高都是相同的

    public SlideLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        scroller = new Scroller(context);
    }

    /**
     * 当布局文件加载完成的时候回调这个方法
     */
    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        contentView = getChildAt(0);
        deleteView = getChildAt(1);
    }

    /**
     * 在测量方法里,得到各个控件的宽和高
     *
     * @param widthMeasureSpec
     * @param heightMeasureSpec
     */
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        contentWidth = contentView.getMeasuredWidth();
        deleteWidth = deleteView.getMeasuredWidth();
        viewHeight = getMeasuredHeight();
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        //指定菜单的位置
        deleteView.layout(contentWidth, 0, contentWidth + deleteWidth, viewHeight);
    }

    private float startX;
    private float startY;
    private float downX;//只赋值一次
    private float downY;

    /**
     * 解决滑动item后不能自动打开或者关闭
     * @param event
     * @return
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                //1.按下记录坐标
                downX = startX = event.getX();
                downY = startY = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                //2.记录结束值
                float endX = event.getX();
                float endY = event.getY();
                //3.计算偏移量
                float distanceX = endX - startX;

                int toScrollX = (int) (getScrollX() - distanceX);

                //屏蔽非法值
                if (toScrollX < 0) {
                    toScrollX = 0;
                } else if (toScrollX > deleteWidth) {
                    toScrollX = deleteWidth;
                }
                scrollTo(toScrollX, getScrollY());
                startX = event.getX();
                startY = event.getY();

                //在X轴和Y轴滑动的距离
                float DX = Math.abs(endX - downX);
                float DY = Math.abs(endY - downY);
                //解决item滑动后不能自动打开和关闭
                if (DX > DY && DX > 8) {
                    //水平方向滑动
                    //响应侧滑
                    //反拦截,事件给SlideLayout
                    getParent().requestDisallowInterceptTouchEvent(true);
                }
                break;
            case MotionEvent.ACTION_UP:
                int totalScrollX = getScrollX();//偏移量
                if (totalScrollX < deleteWidth / 2) {
                    //关闭delete按钮
                    closeDelete();
                } else {
                    //打开delete按钮
                    openDelete();
                }
                break;
        }
        return true;
    }

    /**
     * true:拦截孩子的事件,但会执行当前控件的onTouchEvent()方法
     * false:不拦截孩子的事件,事件继续传递
     *
     * @param event
     * @return
     */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        boolean intercept = false;
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                //1.按下记录坐标
                downX = startX = event.getX();
                downY = startY = event.getY();
                if(onStateChangeListenter != null){
                    onStateChangeListenter.onDown(this);
                }
                break;
            case MotionEvent.ACTION_MOVE:
                //2.记录结束值
                float endX = event.getX();
                //3.计算偏移量
                startX = event.getX();

                //在X轴和Y轴滑动的距离
                float DX = Math.abs(endX - downX);
                //解决item滑动后不能自动打开和关闭
                if (DX > 8) {
                    intercept = true;
                }
                break;
            case MotionEvent.ACTION_UP:
                break;
        }
        return intercept;
    }

    /**
     * 关闭delete按钮
     */
    public void closeDelete() {
        //目标位置 --> 0
        int distanceX = 0 - getScrollX();
        scroller.startScroll(getScrollX(), getScrollY(), distanceX, getScrollY());
        invalidate();//强制刷新
        if(onStateChangeListenter != null){
            onStateChangeListenter.onClose(this);
        }
    }

    /**
     * 打开delete按钮
     */
    public void openDelete() {
        //目标位置 --> deleteWidth
        int distanceX = deleteWidth - getScrollX();
        scroller.startScroll(getScrollX(), getScrollY(), distanceX, getScrollY());
        invalidate();//强制刷新
        if(onStateChangeListenter != null){
            onStateChangeListenter.onOpen(this);
        }
    }

    /**
     * 调用invalidate()时自动调用此方法
     */
    @Override
    public void computeScroll() {
        super.computeScroll();
        if (scroller.computeScrollOffset()) {
            scrollTo(scroller.getCurrX(), scroller.getCurrY());
            invalidate();
        }
    }

    /**
     * 监听SlideLayout状态的改变
     * 限制只能打开一个item
     */
    public interface OnStateChangeListenter{
        void onClose(SlideLayout layout);
        void onDown(SlideLayout layout);
        void onOpen(SlideLayout layout);
    }

    private OnStateChangeListenter onStateChangeListenter;

    public void setOnStateChangeListenter(OnStateChangeListenter onStateChangeListenter){
        this.onStateChangeListenter = onStateChangeListenter;
    }
}

数据库帮助类代码

package com.atguigu.listviewadapter.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by YY on 2017/7/6.
 */

public class PersonOpenHelper extends SQLiteOpenHelper {

    /**
     * Person建表语句
     */
    public static final String CREATE_PERSON = "create table Person(id integer primary key autoincrement,personId integer,name text,gender text,number text)";

    public PersonOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_PERSON);//创建Person表

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

数据库操作类代码

package com.atguigu.listviewadapter.model;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.atguigu.listviewadapter.Person;
import com.atguigu.listviewadapter.db.PersonOpenHelper;

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

/**
 * Created by YY on 2017/7/6.
 */

public class PersonDB {
    /**
     * 数据库名
     */
    public static final String DB_NAME = "listview_adapter";

    /**
     * 数据库版本
     */
    public static final int VERSION = 1;

    private static PersonDB personDB;

    private SQLiteDatabase db;


    /**
     * 将构造方法私有化
     */
    private PersonDB(Context context) {
        PersonOpenHelper dbHelper = new PersonOpenHelper(context, DB_NAME, null, VERSION);
        db = dbHelper.getWritableDatabase();
    }

    /**
     * 获取PersonDB的实例
     */
    public synchronized static PersonDB getInstance(Context context) {
        if (personDB == null) {
            personDB = new PersonDB(context);
        }
        return personDB;
    }

    public void savePerson(Person person) {
        if (person != null) {
            ContentValues values = new ContentValues();
            values.put("name", person.getName());
            values.put("gender", person.getGender());
            values.put("number", person.getNamber());
            db.insert("Person", null, values);
        }
    }

    /**
     * 从数据库中读取人的信息
     */
    public List<Person> showPerson() {
        List<Person> list = new ArrayList<Person>();
        Cursor cursor = db.query("Person", null, null, null, null, null, null);
        if (cursor.moveToFirst()) {
            do {
                Person person = new Person();
                person.setPersonId(cursor.getInt(cursor.getColumnIndex("id")));
                person.setName(cursor.getString(cursor.getColumnIndex("name")));
                person.setGender(cursor.getString(cursor.getColumnIndex("gender")));
                person.setNamber(cursor.getString(cursor.getColumnIndex("number")));
                list.add(person);
            } while (cursor.moveToNext());
        }
        if (cursor != null) {
            cursor.close();
        }
        return list;
    }

    /**
     * 从数据库中删除人的信息
     */
    public void deletePerson(int personId) {

        db.delete("Person", "id=?", new String[]{personId + ""});
    }

    /**
     * 从数据库中更新人的信息
     */
    public void updatePerson(Person person) {
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", person.getName());
        contentValues.put("gender", person.getGender());
        contentValues.put("number", person.getNamber());
        db.update("Person", contentValues, "id=?", new String[]{person.getPersonId() + ""});
    }
}

Person类代码

package com.atguigu.listviewadapter;

import android.graphics.drawable.Drawable;

import java.io.Serializable;

/**
 * Created by YY on 2017/7/6.
 */

public class Person implements Serializable {
    private int personId;
    private String name;
    private String gender;
    private String namber;


    public Person() {
    }

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

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

    public String getNamber() {
        return namber;
    }

    public void setNamber(String namber) {
        this.namber = namber;
    }

    public Person(int personId, String name, String gender, String namber) {

        this.name = name;
        this.gender = gender;
        this.namber = namber;
    }

    public int getPersonId() {
        return personId;
    }

    public void setPersonId(int personId) {
        this.personId = personId;
    }

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

MainActivity类代码

package com.atguigu.listviewadapter;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.atguigu.listviewadapter.model.PersonDB;
import com.atguigu.listviewadapter.util.SlideLayout;

import java.util.List;


public class MainActivity extends Activity {

    private TextView tv_add;
    private ListView lv_main;
    private MyAdapter myAdapter;

    private List<Person> list;
    private int requestCode = 2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        tv_add = (TextView) findViewById(R.id.tv_add);
        lv_main = (ListView) findViewById(R.id.lv_main);

        tv_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, AddActivity.class);

                startActivityForResult(intent, requestCode);
            }
        });
        //添加数据
        PersonDB personDB = PersonDB.getInstance(this);
        list = personDB.showPerson();
        //设置BaseAdapter
        myAdapter = new MyAdapter();
        //添加到lv_main中
        lv_main.setAdapter(myAdapter);

    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 2) {
            if (resultCode == 3) {
                // 从data中取出数据
                Person person = (Person) data.getSerializableExtra("person_data");
                list.add(person);
            }
        }
        if (requestCode == 5) {
            if (resultCode == 4) {
                Log.e("onActivityResult", "onActivityResult");
                list.clear();
                PersonDB personDB = PersonDB.getInstance(this);
                list = personDB.showPerson();
            }
        }
        myAdapter.notifyDataSetChanged();

    }

    public class MyAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

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

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if (convertView == null) {
                convertView = View.inflate(MainActivity.this, R.layout.item_main, null);
                viewHolder = new ViewHolder();
                //得到当前行的数据对象
                viewHolder.item_delete = (TextView) convertView.findViewById(R.id.item_delete);
                viewHolder.item_content = (LinearLayout) convertView.findViewById(R.id.item_content);
                viewHolder.imageView = (ImageView) viewHolder.item_content.findViewById(R.id.item_touxiang);
                viewHolder.nameTV = (TextView) viewHolder.item_content.findViewById(R.id.item_name);
                viewHolder.genderTV = (TextView) viewHolder.item_content.findViewById(R.id.item_gender);
                viewHolder.numberTV = (TextView) viewHolder.item_content.findViewById(R.id.item_number);
                viewHolder.send = (Button) viewHolder.item_content.findViewById(R.id.send);
                viewHolder.call = (Button) viewHolder.item_content.findViewById(R.id.call);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            final Person person = list.get(position);
            //设置数据
            viewHolder.nameTV.setText(person.getName());
            viewHolder.genderTV.setText(person.getGender());
            viewHolder.numberTV.setText(person.getNamber());

            final String number = list.get(position).getNamber();

            /**
             * 点击发信息,携带电话号码进入发信息界面
             */
            viewHolder.send.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String actionSend = Intent.ACTION_SENDTO;
                    Intent intentSend = new Intent(actionSend);
                    intentSend.setData(Uri.parse("smsto:" + number));
                    startActivity(intentSend);

                }
            });

            /**
             * 点击打电话,携带电话号码进入打电话界面
             */
            viewHolder.call.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String actionCall = Intent.ACTION_DIAL;
                    Intent intentCall = new Intent(actionCall);
                    intentCall.setData(Uri.parse("tel:" + number));
                    startActivity(intentCall);
                }
            });

            /**
             * 给每一个item_content设置监听,跳转到AddActivity界面,用于更新数据
             */
            viewHolder.item_content.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Person person = list.get(position);
                    Intent intent = new Intent(MainActivity.this, AddActivity.class);
                    intent.putExtra("onClick_item", true);
                    intent.putExtra("person", person);
                    int requestCode2 = 5;
                    startActivityForResult(intent, requestCode2);
                }
            });

            /**
             * 点击删除按钮,删除数据库中的数据和删除列表中的数据,并更新列表
             */
            viewHolder.item_delete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Person personDelete = list.get(position);
                    PersonDB personDB = PersonDB.getInstance(MainActivity.this);
                    personDB.deletePerson(personDelete.getPersonId());
                    list.remove(position);

                    SlideLayout slideLayout = (SlideLayout) v.getParent();
                    slideLayout.closeDelete();

                    myAdapter.notifyDataSetChanged();
                }
            });
            SlideLayout slideLayout = (SlideLayout) convertView;
            slideLayout.setOnStateChangeListenter(new MyOnStateChangeListenter());

            return convertView;

        }
    }

    private SlideLayout slideLayout;

    class MyOnStateChangeListenter implements SlideLayout.OnStateChangeListenter {

        @Override
        public void onClose(SlideLayout layout) {
            if (slideLayout == layout) {
                slideLayout = null;
            }
        }

        @Override
        public void onDown(SlideLayout layout) {
            if (slideLayout != null && slideLayout != layout) {
                slideLayout.closeDelete();
            }
        }

        @Override
        public void onOpen(SlideLayout layout) {
            slideLayout = layout;
        }
    }

    private static class ViewHolder {
        TextView item_delete;
        LinearLayout item_content;
        ImageView imageView;
        TextView nameTV;
        TextView genderTV;
        TextView numberTV;
        Button send;
        Button call;
    }


}


AddActivity代码

package com.atguigu.listviewadapter;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import com.atguigu.listviewadapter.model.PersonDB;

public class AddActivity extends Activity implements View.OnClickListener {

    private TextView cancel;
    private TextView confirm;

    private ImageView iv_touxiang;
    private EditText et_name;
    private RadioGroup rg_gender;
    private EditText et_number;
    private String gender = "男";

    /**
     * 是否是点击onItemClick跳转过来的
     */
    private boolean isFromItem;

    /**
     * 记录更新的person
     */
    private Person itemPerson;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_add);
        cancel = (TextView) findViewById(R.id.cancel);
        confirm = (TextView) findViewById(R.id.confirm);
        iv_touxiang = (ImageView) findViewById(R.id.iv_touxiang);
        et_name = (EditText) findViewById(R.id.et_name);
        rg_gender = (RadioGroup) findViewById(R.id.rg_gender);
        et_number = (EditText) findViewById(R.id.et_number);

        //如果是从Item中跳转过来,设置数据

        isFromItem = getIntent().getBooleanExtra("onClick_item", false);
        itemPerson = (Person) getIntent().getSerializableExtra("person");
        if (isFromItem) {
            et_name.setText(itemPerson.getName());
            String gender_item = itemPerson.getGender();
            if (gender_item.equals(gender)) {
                rg_gender.check(R.id.rb_man);
            } else {
                rg_gender.check(R.id.rb_wom);
            }
            et_number.setText(itemPerson.getNamber());
        }


        rg_gender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                RadioButton checked = (RadioButton) findViewById(checkedId);
                gender = checked.getText().toString();
            }
        });

        cancel.setOnClickListener(this);
        confirm.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.cancel:
                finish();
                break;
            case R.id.confirm:
                String name = et_name.getText().toString();
                String number = et_number.getText().toString();

                if (!isFromItem) {
                    Person person = new Person();
                    person.setName(name);
                    person.setGender(gender);
                    person.setNamber(number);
                    PersonDB personDB = PersonDB.getInstance(this);
                    personDB.savePerson(person);
                    Intent intent = new Intent();
                    intent.putExtra("person_data", person);
                    int resultCode = 3;
                    setResult(resultCode, intent);
                } else {
                    PersonDB personDB = PersonDB.getInstance(this);
                    itemPerson.setName(name);
                    itemPerson.setGender(gender);
                    itemPerson.setNamber(number);
                    personDB.updatePerson(itemPerson);
                    Intent intent = new Intent();
                    int resultCode = 4;
                    setResult(resultCode, intent);
                }

                finish();
                break;
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值