Android-studio

这篇博客详细介绍了Android Studio中的布局管理,包括LinearLayout的使用,如orientation、layout_weight等属性;RelativeLayout的相对位置设置;ScrollView的滚动功能。此外,还讲解了按钮选择与跳转、计算器实现、拍照功能的布局与配置、元素的增删改操作以及数据库的增删改查和注册登录功能。涉及到的文件包括activity_main.xml、Mainactivity.java、MainActivity2.java等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android-studio

  • LinearLayout 线性布局

    • orientation 方向

    • layout_weight:权重,当layout_weight设置为0dp时,他可以按比例设置元件的宽度(水平)

    • gravity:设置文本在容器中的位置

    • layout_gravity:设置容器在窗口中的位置

    • background:设置背景色

    • text_color:文本颜色

    • layout_margin:边距

      1.layout_marginLeft 在容器文本的左边填充距离

    1. layout_marginBottom 在容器文本的下面填充距离
    2. layout_marginTop 在容器文本的上方填充距离
    3. layout_marginRight 在容器文本的右边填充距离
  • RelativeLayout 相对布局

    • layout_alignParentTop=“true” 在父容器的顶部
    • layout_centerHorizontal=“true” 水平居中
    • textSize=“16dp”
    • 绝对位置
      1. android:layout_alignParentBottom=“true” 在窗口下方
      2. android:layout_alignParentLeft=“true” 在窗口左边
      3. android:layout_alignParentRight=“true” 在窗口右边
      4. android:layout_centerInParent=“true” 在窗口正中
      5. layout_centerHorizontal=“true” 水平居中
      6. layout_centerVertical=“true” 垂直居中
    • 相对位置
      1. android:layout_below="@id" 在指定元件下方
      2. android:layout_above="@id" 在指定元件上方
      3. android:layout_toRightOf="@id" 在指定元件右方
      4. android:layout_toLeftOf="@id" 在指定元件左方
  • ScrollView 滚动视图

按钮的选择与跳转

  • CheckBox 复选框

布局

主布局(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <!--    <TextView-->
    <!--        android:layout_width="wrap_content"-->
    <!--        android:layout_height="wrap_content"-->
    <!--        android:text="Hello World!"-->
    <!--        app:layout_constraintBottom_toBottomOf="parent"-->
    <!--        app:layout_constraintLeft_toLeftOf="parent"-->
    <!--        app:layout_constraintRight_toRightOf="parent"-->
    <!--        app:layout_constraintTop_toTopOf="parent" />-->

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/cb_1"
            android:text="黑丝"></CheckBox>
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/cb_2"
            android:text="白丝"></CheckBox>
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/cb_3"
            android:text="渔网"></CheckBox>
    </LinearLayout>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="选择"
            android:id="@+id/btn_ok"
            ></Button>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="取消"
            android:id="@+id/btn_no"></Button>

    <!--    <DatePicker-->
    <!--    android:layout_width="wrap_content"-->
    <!--    android:layout_height="wrap_content"-->
    <!--    android:id="@+id/dp"></DatePicker>-->
    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lv_1"/>

</LinearLayout>
</ScrollView>
跳转视图(activity_main2.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity2"
    android:orientation="vertical">

<!--<CheckBox-->
<!--    android:layout_width="wrap_content"-->
<!--    android:layout_height="wrap_content"-->
<!--    android:id="@+id/m1"/>-->
<!--    <CheckBox-->
<!--        android:layout_width="wrap_content"-->
<!--        android:layout_height="wrap_content"-->
<!--        android:id="@+id/m2"/>-->

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="白丝"
        android:id="@+id/rb_1"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="黑丝"
        android:id="@+id/rb_2"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="想选点击"
        android:id="@+id/jump2"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/pt_1"
        android:src="@drawable/mei"/>
</LinearLayout>

配置文件java

主布局配置(Mainactivity.java)
public class MainActivity extends AppCompatActivity{
    CheckBox cb_1;
    CheckBox cb_2;
    CheckBox cb_3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cb_1 = (CheckBox) findViewById(R.id.cb_1);
        cb_2 = (CheckBox) findViewById(R.id.cb_2);
        cb_3 = (CheckBox) findViewById(R.id.cb_3);
        Button btn1 = (Button) findViewById(R.id.btn_ok);
        btn1.setOnClickListener(new myClick());
        Button btn2 = (Button) findViewById(R.id.btn_no);
        btn2.setOnClickListener(new myClick());
        String []strs={"张三","李四","王五"};
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,strs);
        ListView lv=findViewById(R.id.lv_1);
        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//                Toast.makeText(MainActivity.this,"pos:""position",Toast.LENGTH_LONG).show();
            }
        });

//        1种
//            @Override
//            public void onClick(View view) {
//                Toast.makeText(MainActivity.this, "不选也得选", Toast.LENGTH_SHORT).show();
//            }
//        });

//        DatePicker dp=(DatePicker)findViewById(R.id.dp);
//        dp.setOnDateChangedListener(new);
//        btn1.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                String str_hobby = "您的爱好是:";
//                if (cb_1.isChecked()) str_hobby += "黑丝";
//                if (cb_2.isChecked()) str_hobby += "白丝";
//                if (cb_3.isChecked()) str_hobby += "渔网";
//                Toast.makeText(MainActivity.this, str_hobby, Toast.LENGTH_LONG).show();
//            }
//        });
    }
    //    2种
    class myClick implements View.OnClickListener{
        @Override
        public void onClick(View v){
            int id=v.getId();
            switch (id){
                case R.id.btn_ok:
                    String str_hobby = "您的爱好是:";
                    if (cb_1.isChecked()) str_hobby += "黑丝";
                    if (cb_2.isChecked()) str_hobby += "白丝";
                    if (cb_3.isChecked()) str_hobby += "渔网";
                    Toast.makeText(MainActivity.this, str_hobby, Toast.LENGTH_LONG).show()
                    ;break;
                case R.id.btn_no:
                    Toast.makeText(MainActivity.this, "不选就看", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(MainActivity.this, MainActivity2.class);
                    startActivityForResult(intent,1);break;
            }
        }
    }
}
跳转页面配置(Mainactivity2.java)
public class MainActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
//        setContentView(R.layout.activity_main);
        Button btn1 = (Button) findViewById(R.id.rb_1);
        Button btn2 = (Button) findViewById(R.id.rb_2);
        Button btn3 = (Button) findViewById(R.id.jump2);
        btn1.setOnClickListener(new myClick());
        btn2.setOnClickListener(new myClick());
        btn3.setOnClickListener(new myClick());

    }

    class myClick implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            ImageView iv= (ImageView) findViewById(R.id.pt_1);
            switch (v.getId()) {
                case R.id.rb_1:iv.setImageResource(R.drawable.mei2);break;
                case R.id.rb_2:iv.setImageResource(R.drawable.mei3);break;
                case R.id.jump2:
                    Intent intent = new Intent(MainActivity2.this, MainActivity.class);
                    startActivityForResult(intent,1);break;
            }
        }
    }
}

计算器

布局(activity_main_xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    tools:context=".MainActivity">
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:context=".MainActivity"
    android:orientation="horizontal"
    android:columnCount="4"
    android:rowCount="6"
    android:paddingBottom="15dp">
    <TextView
        android:text="0"
        android:layout_height="100dp"
        android:layout_gravity="fill"
        android:layout_columnSpan="4"
        android:textSize="50sp"
        android:gravity="right|bottom"
        android:background="#ffcccc"
        android:id="@+id/text_1"
        ></TextView>

    <Button
        android:text="回退"
        android:layout_gravity="fill"
        android:layout_columnSpan="2"
        android:id="@+id/btn_back"/>
    <Button
        android:text="清空"
        android:layout_gravity="fill"
        android:layout_columnSpan="2"
        android:id="@+id/btn_ac"/>

    <Button
        android:text="1"
        android:textSize="15sp"
        android:id="@+id/btn_1"/>
    <Button
        android:text="2"
        android:textSize="15sp"
        android:id="@+id/btn_2"/>
    <Button
        android:text="3"
        android:textSize="15sp"
        android:id="@+id/btn_3"/>
    <Button
        android:text="+"
        android:textSize="15sp"
        android:hint="50px"
        android:id="@+id/btn_add"/>
    <Button
        android:text="4"
        android:textSize="15sp"
        android:id="@+id/btn_4"/>
    <Button
        android:text="5"
        android:textSize="15sp"
        android:id="@+id/btn_5"/>
    <Button
        android:text="6"
        android:textSize="15sp"
        android:id="@+id/btn_6"/>
    <Button
        android:text="-"
        android:textSize="15sp"
        android:id="@+id/btn_sub"/>
    <Button
        android:text="7"
        android:textSize="15sp"
        android:id="@+id/btn_7"/>
    <Button
        android:text="8"
        android:textSize="15sp"
        android:id="@+id/btn_8"/>
    <Button
        android:text="9"
        android:textSize="15sp"
        android:id="@+id/btn_9"/>
    <Button
        android:text="/"
        android:textSize="15sp"
        android:id="@+id/btn_chu"/>
    <Button
        android:text="*"
        android:textSize="15sp"
        android:id="@+id/btn_cheng"/>
    <Button
        android:text="0"
        android:textSize="15sp"
        android:id="@+id/btn_0"/>

    <Button
        android:text="."
        android:textSize="15sp"
        android:id="@+id/btn_dot"/>
    <Button
        android:text="="
        android:textSize="15sp"
        android:id="@+id/btn_equal"/>
</GridLayout>
</RelativeLayout>

配置文件(MainActivity.java)

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
String op;
Double op1,op2,result;
boolean flag=false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn_1=(Button) findViewById(R.id.btn_1);
        Button btn_2=(Button) findViewById(R.id.btn_2);
        Button btn_3=(Button) findViewById(R.id.btn_3);
        Button btn_4=(Button) findViewById(R.id.btn_4);
        Button btn_5=(Button) findViewById(R.id.btn_5);
        Button btn_6=(Button) findViewById(R.id.btn_6);
        Button btn_7=(Button) findViewById(R.id.btn_7);
        Button btn_8=(Button) findViewById(R.id.btn_8);
        Button btn_9=(Button) findViewById(R.id.btn_9);
        Button btn_0=(Button) findViewById(R.id.btn_0);
        Button btn_ac=(Button) findViewById(R.id.btn_ac);
        Button btn_back=(Button) findViewById(R.id.btn_back);
        Button btn_add=(Button) findViewById(R.id.btn_add);
        Button btn_cheng=(Button) findViewById(R.id.btn_cheng);
        Button btn_chu=(Button) findViewById(R.id.btn_chu);
        Button btn_sub=(Button) findViewById(R.id.btn_sub);
        Button btn_dot=(Button) findViewById(R.id.btn_dot);
        Button btn_equal=(Button) findViewById(R.id.btn_equal);
        btn_1.setOnClickListener(new myClick());
        btn_2.setOnClickListener(new myClick());
        btn_3.setOnClickListener(new myClick());
        btn_4.setOnClickListener(new myClick());
        btn_5.setOnClickListener(new myClick());
        btn_6.setOnClickListener(new myClick());
        btn_7.setOnClickListener(new myClick());
        btn_8.setOnClickListener(new myClick());
        btn_9.setOnClickListener(new myClick());
        btn_0.setOnClickListener(new myClick());
        btn_ac.setOnClickListener(new myClick());
        btn_back.setOnClickListener(new myClick());
        btn_add.setOnClickListener(new myClick());
        btn_cheng.setOnClickListener(new myClick());
        btn_chu.setOnClickListener(new myClick());
        btn_dot.setOnClickListener(new myClick());
        btn_equal.setOnClickListener(new myClick());
        btn_sub.setOnClickListener(new myClick());
    }
    class myClick implements View.OnClickListener{
        @Override
        public void onClick(View v){
            TextView tv=(TextView) findViewById(R.id.text_1);
            String str=tv.getText().toString();
            switch (v.getId()){
                case R.id.btn_ac:tv.setText("0");break;
                case R.id.btn_back:
                    if(str.length()==1)
                    {
                        tv.setText("0");
                    }
                    else{
                        tv.setText(str.substring(0,str.length()-1));
                    }
                    ;break;
                case R.id.btn_1:
                case R.id.btn_2:
                case R.id.btn_3:

                case R.id.btn_4:
                case R.id.btn_5:
                case R.id.btn_6:
                case R.id.btn_7:
                case R.id.btn_8:
                case R.id.btn_9:
                case R.id.btn_0:

                Button btn=(Button)findViewById(v.getId());
                String btn_text=btn.getText().toString();
                if(!str.equals("0")&&!flag)
                    tv.setText(str+btn_text);
                else
                    tv.setText(btn_text);
                    flag=false;
                    break;

                case R.id.btn_dot:
                    tv.setText(str+".");
                    if(!str.contains("."))
                        break;





                case R.id.btn_add:
                case R.id.btn_cheng:
                case R.id.btn_chu:
                case R.id.btn_sub:


                Button btn2=(Button) findViewById(v.getId());
                op=btn2.getText().toString();
                op1=Double.parseDouble(str);
                flag=true;
                break;


                case R.id.btn_equal:
                    op2=Double.parseDouble(str);
                    switch (op){
                    case "+":result=op1+op2; break;
                    case "-":result=op1-op2; break;
                    case "*":result=op1*op2; break;
                    case "/":
                        if(op2!=0.0)result=op1/op2;
                        else {result=0.0;}break;
                }
                tv.setText(String.valueOf(result));
            }
        }
        }
}

布局中元素位置应用

 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮一"
        android:layout_centerInParent="true"
        android:id="@+id/btn_jump"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮二"
        android:layout_alignParentLeft="true"
        ></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮三"
        android:layout_alignParentRight="true"></Button>

    <Button
        android:text="按钮四"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"></Button>
    <Button
        android:text="按钮五"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentLeft="true"
        android:text="按钮六"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentRight="true"
        android:text="按钮七"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_jump"
        android:layout_centerHorizontal="true"
        android:text="按钮八"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btn_jump"
        android:layout_centerHorizontal="true"
        android:text="按钮九"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btn_jump"
        android:layout_centerVertical="true"
        android:text="按钮十"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/btn_jump"
        android:layout_centerVertical="true"
        android:text="按钮十一"></Button>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btn_jump"
        android:layout_above="@+id/btn_jump"
        android:text="按钮十二"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btn_jump"
        android:layout_below="@+id/btn_jump"
        android:text="按钮十三"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/btn_jump"
        android:layout_above="@+id/btn_jump"
        android:text="按钮十四"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/btn_jump"
        android:layout_below="@+id/btn_jump"
        android:text="按钮十五"></Button>
    <Button
        android:text="按钮十六"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"></Button>
    <Button
        android:text="按钮十七"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btn_jump"
        ></Button>

拍照

布局xml

activity_main_xml(layout)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="拍照"
        android:id="@+id/btn_photo"
        tools:ignore="MissingConstraints"></Button>

</LinearLayout>
activity_take_photo.xml(layout)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".TakePhotoActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/img_picture"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="拍照"
        android:id="@+id/btn_takePhoto"/>
</LinearLayout>
file_paths.xml(xml)
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path
        name="my_images"
        path="."/>

</paths>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mainfest.myapplication" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher_round"
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication" >
        <activity
            android:name=".TakePhotoActivity"
            android:exported="true" />
        <activity
            android:name=".MainActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.example.mainfest.myapplication.MainActivity.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>
    </application>

</manifest>

配置文件java

MainActivity.java
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn_photo =(Button) findViewById(R.id.btn_photo);
        btn_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,TakePhotoActivity.class);
                startActivity(intent);
            }
        });
    }
    }

activity_take_photo.java
package com.example.mainfest.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.FileProvider;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TakePhotoActivity extends AppCompatActivity {
    final int TAKE_PHOTO = 1;
    ImageView img;
    Uri imageUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_take_photo);
        Button btn_takePhoto = (Button) findViewById(R.id.btn_takePhoto);
         img = (ImageView) findViewById(R.id.img_picture);
        btn_takePhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                File outputImage = new File(getExternalCacheDir(), "output_image.jpg");
                try {
                    if (outputImage.exists())
                        outputImage.delete();
                        outputImage.createNewFile();

                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (Build.VERSION.SDK_INT >= 24)
                    imageUri = FileProvider.getUriForFile(TakePhotoActivity.this, "com.example.mainfest.myapplication.MainActivity.fileprovider", outputImage);
                 else
                    imageUri = Uri.fromFile(outputImage);
                    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                    startActivityForResult(intent, TAKE_PHOTO);

            }
        });
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case TAKE_PHOTO:
                if (resultCode == RESULT_OK) {
                    try {
                        Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
                        img.setImageBitmap(bitmap);
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();

                }
                }
                break;
            default:
                break;
        }
    }
}

元素增删改(水果为例)

布局

主布局(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/lv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints" />

    <ImageButton
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_gravity="right"
    android:background="@drawable/add"
    android:id="@+id/imgbtn_add"/>
</LinearLayout>
添加和修改界面布局(activity_edit_and_add.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".EditAndAddActivity">


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et_fruit_name"
        android:hint="请输入水果名称"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minLines="3"
        android:id="@+id/et_fruit_intr"
        android:hint="请输入水果的介绍"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交"
        android:id="@+id/btn_submit"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="取消"
        android:id="@+id/btn_cancle"/>
</LinearLayout>
显示布局(fruit_item.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/lv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints" />

    <ImageButton
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_gravity="right"
    android:background="@drawable/add"
    android:id="@+id/imgbtn_add"/>
</LinearLayout>

配置文件java

MainActivity.java
public class MainActivity extends AppCompatActivity {
    List<Fruit> fruitsList = new ArrayList<>();
    FruitAdapter adapter;
    int pos;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initFruits();
        adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitsList);
        ListView listView = (ListView) findViewById(R.id.lv_1);
        listView.setAdapter(adapter);
        ImageButton ib_1 = (ImageButton)findViewById(R.id.imgbtn_add);
        ib_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,EditAndAddActivity.class);
                startActivityForResult(intent,1);
            }
        });
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                Fruit fruit=fruitsList.get(position);
                Intent intent = new Intent(MainActivity.this,EditAndAddActivity.class);
                intent.putExtra("fruitName",fruit.getName());
                intent.putExtra("fruitIntr",fruit.getIntr());
                intent.putExtra("fruitPosition",position);
                startActivityForResult(intent,2);
                pos=position;
//                Toast.makeText(MainActivity.this,"你点击了:"+fruit.getName(),Toast.LENGTH_SHORT).show();
            }
        });
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
                Fruit fruit=fruitsList.get(position);
                AlertDialog.Builder alert=new AlertDialog.Builder(MainActivity.this);
                alert.setTitle("确认删除").setMessage("是否确认删除"+fruit.getName()+"?");
                alert.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int which) {
                        fruitsList.remove(position);
                        adapter.notifyDataSetChanged();
                    }
                });
                alert.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int which) {
                        dissmiss();
                    }

                    private void dissmiss() {
                    }
                });
                alert.show();
                return false;
            }
});
    }
    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case 1:    //从添加按钮返回
                if (resultCode==RESULT_OK){
                    String str_fruitName=data.getStringExtra("fruitName");
                    String str_fruitIntr=data.getStringExtra("fruitIntr");
                    Fruit fruit = new Fruit(str_fruitName,R.drawable.china,str_fruitIntr);
                    fruitsList.add(fruit);
                    adapter.notifyDataSetChanged();
                }break;
            case 2:  //从编辑返回
                if (resultCode==RESULT_OK){
                    String str_fruitName=data.getStringExtra("fruitName");
                    String str_fruitIntr=data.getStringExtra("fruitIntr");
                    Fruit fruit=new Fruit(str_fruitName,R.drawable.add,str_fruitIntr);
                    fruitsList.set(pos,fruit);
                    adapter.notifyDataSetChanged();
                }
        }
    }

    void initFruits() {
        for (int i = 0; i < 1; i++) {
            Fruit apple = new Fruit("北京", R.drawable.biejing,"首都");
            fruitsList.add(apple);
            Fruit banana = new Fruit("上海", R.drawable.shanghai,"上海");
            fruitsList.add(banana);
            Fruit orange = new Fruit("成都", R.drawable.chengdu,"美女");
            fruitsList.add(orange);
            Fruit watermelon = new Fruit("西安", R.drawable.xian,"兵马俑");
            fruitsList.add(watermelon);
            Fruit pear = new Fruit("天津", R.drawable.tianjin,"相声");
            fruitsList.add(pear);
            Fruit grape = new Fruit("云南", R.drawable.yunnan,"少数名族");
            fruitsList.add(grape);
            Fruit pineapple = new Fruit("江苏", R.drawable.jiangsu,"我也不知道");
            fruitsList.add(pineapple);
            Fruit cherry = new Fruit("南京", R.drawable.nanjing,"嘤嘤嘤,好凶凶");
            fruitsList.add(cherry);
            Fruit mango = new Fruit("浙江", R.drawable.zhejiang,"景色美");
            fruitsList.add(mango);
        }
    }
}
EditAndAddActivity.java
public class EditAndAddActivity extends AppCompatActivity {
    Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_and_add);
        EditText et_fruitName = (EditText) findViewById(R.id.et_fruit_name);
        EditText et_fruitIntr = (EditText) findViewById(R.id.et_fruit_intr);
        Button btn_submit =(Button) findViewById(R.id.btn_submit);
        Button btn_cancle =(Button) findViewById(R.id.btn_cancle);
        intent =getIntent();
        et_fruitName.setText(intent.getStringExtra("fruitName"));
        et_fruitIntr.setText(intent.getStringExtra("fruitIntr"));
       final int pos=intent.getIntExtra("fruitPosition",0);
        btn_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String str_fruitName=et_fruitName.getText().toString();
                String str_fruitIntr=et_fruitIntr.getText().toString();
                if (str_fruitName.isEmpty()||str_fruitIntr.isEmpty()){
                    setResult(RESULT_CANCELED);
                    finish();
                }
                else {

                    intent.putExtra("fruitName",str_fruitName);
                    intent.putExtra("fruitIntr",str_fruitIntr);
                    intent.putExtra("fruitPosition",pos);
                    setResult(RESULT_OK,intent);
                    finish();
                }
            }
        });
        btn_cancle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(EditAndAddActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });

    }
}
Fruit.java
public class Fruit {
    String name;
    int imgId;
    String intr;
    public Fruit (String name,int imgId,String intr){
        this.name=name;
        this.imgId=imgId;
        this.intr=intr;
    }
    String getName(){
        return  name;
    }
    int getImgId(){
        return imgId;
    }
    String getIntr(){
        return intr;
    }
}

FruitAdapter.java
public class FruitAdapter extends ArrayAdapter<Fruit> {
    int resourceId;
    public FruitAdapter(Context context, int resource, List<Fruit> objects){
        super(context,resource,objects);
        resourceId=resource;
    }
    @Override
    public View getView(int position, View conertView, ViewGroup parenet){
        Fruit fruit=getItem(position);
        View view= LayoutInflater.from(getContext()).inflate(resourceId,parenet,false);
        ImageView imageView=(ImageView)view.findViewById(R.id.img_fruit);
        TextView tv_fruitName=(TextView) view.findViewById(R.id.tv_FruitName);
        TextView tv_fruitIntr=(TextView) view.findViewById(R.id.tv_FruitIntr) ;
        tv_fruitIntr.setText(fruit.intr);
        imageView.setImageResource(fruit.getImgId());
        tv_fruitName.setText(fruit.getName());
        return view;
    }
}

数据库

数据库的增删改查

布局
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="创建表"
    android:id="@+id/btn_create"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="插入数据"
        android:id="@+id/btn_insert"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改数据"
        android:id="@+id/btn_update"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除数据"
        android:id="@+id/btn_delete"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="显示数据"
        android:id="@+id/btn_show"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询"
        android:id="@+id/btn_query"></Button>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入修改后的内容"
        android:id="@+id/et_newContent"></EditText>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入内容"
        android:id="@+id/et_content"></EditText>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_show"></TextView>
</LinearLayout>
配置
DBHelper.java
public class DBHelper extends SQLiteOpenHelper {
    final String CREATE_TABLE1="create table Text(_id integer primary  key autoincrement,content text)";
    Context context;
    public DBHelper(Context context,String dbname,int version){
        super(context,dbname,null,version);
        this.context=context;
    }
    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(CREATE_TABLE1);
        Toast.makeText(context,"创建成功",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
        db.execSQL("drop table if exists Test");
        onCreate(db);
    }
    public void  insert(ContentValues values){
        SQLiteDatabase db=getWritableDatabase();
        db.insert("Text",null,values);
        db.close();
        Toast.makeText(context,"插入数据成功",Toast.LENGTH_SHORT).show();
    }
    public Cursor queryAll(){
        SQLiteDatabase db=getWritableDatabase();
        Cursor cursor=db.query("Text",null,null,null,null,null,null);
        return cursor;
    }
    public Cursor query(String str){
        SQLiteDatabase db=getWritableDatabase();
        Cursor cursor=db.query("Text",null,"content=?",new String[]{str},null,null,null);
       // Cursor cursor=db.rawQuery("select * from text where content='"+str+"'",null);
        return cursor;
    }
    public void delete(String str){
        SQLiteDatabase db=getWritableDatabase();
        db.delete("Text","content=?",new String[]{str});
        db.close();
    }
    public void update(String str_old,ContentValues values_new){
        SQLiteDatabase db=getWritableDatabase();
        db.update("Text",values_new,"content=?",new String[]{str_old});
    }
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
    DBHelper dbHelper=new DBHelper(MainActivity.this,"MyTextDatabase.db",1);
    EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn_create=(Button) findViewById(R.id.btn_create);
        Button btn_insert=(Button) findViewById(R.id.btn_insert);
        Button btn_show=(Button) findViewById(R.id.btn_show);
        Button btn_detele=(Button) findViewById(R.id.btn_delete);
        Button btn_update=(Button) findViewById(R.id.btn_update);
        Button btn_query=(Button) findViewById(R.id.btn_query);
        btn_create.setOnClickListener(new MyClick());
        btn_insert.setOnClickListener(new MyClick());
        btn_show.setOnClickListener(new MyClick());
        btn_detele.setOnClickListener(new MyClick());
        btn_update.setOnClickListener(new MyClick());
        btn_query.setOnClickListener(new MyClick());
        editText=(EditText) findViewById(R.id.et_content);
    }
    class MyClick implements View.OnClickListener{
        @Override
        public void onClick(View v){
            switch (v.getId()){
                case R.id.btn_create:

                    dbHelper.getWritableDatabase();
                    break;
                case R.id.btn_insert:

                    String str=editText.getText().toString();
                    ContentValues contentValues=new ContentValues();
                    contentValues.put("content",str);
                    dbHelper.insert(contentValues);
                    show();
                    break;
                case R.id.btn_show:
                    show();
                    break;
                case R.id.btn_delete:
                    str=editText.getText().toString();
                    dbHelper.delete(str);
                    break;
                case R.id.btn_update:
                    str=editText.getText().toString();
                    EditText et_new_content=(EditText) findViewById(R.id.et_newContent);
                    String str_new=et_new_content.getText().toString();
                    ContentValues contentValues1 =new ContentValues();
                    contentValues1.put("content",str_new);
                    dbHelper.update(str,contentValues1);
                    break;
                case R.id.btn_query:
                    str=editText.getText().toString();
                    Cursor cursor=dbHelper.query(str);
                    String str2="id                  content\n";
                    if (cursor.moveToFirst())
                        do {
                            str2+=cursor.getString(0)+"                ";
                            str2+=cursor.getString(1)+"\n";
                        }while (cursor.moveToNext());
                    TextView textView=(TextView) findViewById(R.id.tv_show);
                    textView.setText(str2);
                    break;
            }
        }
    }
    public void show(){
        Cursor cursor=dbHelper.queryAll();
        String str="id                  content\n";
        if (cursor.moveToFirst())
            do {
                str+=cursor.getString(0)+"                ";
                str+=cursor.getString(1)+"\n";
            }while (cursor.moveToNext());
        TextView textView=(TextView) findViewById(R.id.tv_show);
        textView.setText(str);
    }
}

注册登录和数据增删改查

布局
登录页面(activity_login.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".LoginActivity">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:id="@+id/et_username_login"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"
        android:id="@+id/et_password_login"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"
        android:id="@+id/btn_login"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册"
        android:id="@+id/btn_register"></Button>


</LinearLayout>
主页(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

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

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="新建"
        android:id="@+id/btn_new_note"/>

</LinearLayout>
注册界面(activity_register.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".RegisterActivity">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:id="@+id/et_username_register"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"
        android:id="@+id/et_password_register"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="确认密码"
        android:inputType="textPassword"
        android:id="@+id/et_password_confirm"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册"
        android:id="@+id/btn_ok"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="取消"
        android:id="@+id/btn_cancel"></Button>
</LinearLayout>
添加修改数据界面(activity_new_notes.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".NewNotesActivity">


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入标题"
        android:id="@+id/et_title">
    </EditText>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入内容"
        android:id="@+id/et_content"></EditText>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交"
        android:id="@+id/btn_submit"></Button>

</LinearLayout>
新数据库信息界面(listview_item.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">





    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:textColor="#55A1F3"
        android:id="@+id/tv_id"></TextView>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10pt"
            android:paddingLeft="30px"
            android:id="@+id/tv_title">
        </TextView>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10pt"
            android:paddingLeft="30px"
            android:id="@+id/tv_time"></TextView>



    </LinearLayout>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="5pt"
        android:layout_marginLeft="200px"
        android:id="@+id/tv_content"></TextView>

</LinearLayout>
配置
MainActivity
public class MainActivity extends AppCompatActivity {
    DBHelper dbHelper=new DBHelper(MainActivity.this,"MyDatabase.db",2);
    ListView listView;
    final int NEW_NOTE=1;
    final int EDIT_NOTE=2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=(ListView) findViewById(R.id.list_view);
        renderListView();
        Button btn_new=(Button) findViewById(R.id.btn_new_note);
        btn_new.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,NewNotesActivity.class);
                startActivityForResult(intent,NEW_NOTE);
            }
        });
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long id) {
                   Cursor cursor= (Cursor) listView.getItemAtPosition(i);
                @SuppressLint("Range") String title=cursor.getString(cursor.getColumnIndex("title"));
                @SuppressLint("Range") String content=cursor.getString(cursor.getColumnIndex("content"));
                Intent intent = new Intent(MainActivity.this,NewNotesActivity.class);
                intent.putExtra("title",title);
                intent.putExtra("content",content);
                startActivityForResult(intent,EDIT_NOTE);

            }
        });
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                Cursor cursor=(Cursor) listView.getItemAtPosition(i);
                @SuppressLint("Range") String title=cursor.getString(cursor.getColumnIndex("title"));
                AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("删除数据·").setMessage("确认删除"+title+"?");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dbHelper.deleteNotes(title);
                        renderListView();
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                });
                builder.show();
                return true;
            }
        });
    }
    protected  void renderListView(){
        dbHelper.getWritableDatabase();
        Cursor cursor=dbHelper.queryAll("Notes");
        String from[]=new String[]{"_id","title","content","time"};
        int to[]=new int[]{R.id.tv_id,R.id.tv_title,R.id.tv_time,R.id.tv_content};
        SimpleCursorAdapter adapter=new SimpleCursorAdapter(MainActivity.this,R.layout.listview_item,cursor,from,to,0);
        listView.setAdapter(adapter);
    }
    @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent intent){
        super.onActivityResult(requestCode,resultCode,intent);
        if (resultCode==RESULT_OK){
            String title=intent.getStringExtra("title");
            String content=intent.getStringExtra("content");
            String old_title=intent.getStringExtra("old_title");
//            String id=intent.getStringExtra("id");
            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            Date date=new Date(System.currentTimeMillis());
            String time=simpleDateFormat.format(date);
            ContentValues values=new ContentValues();
            values.put("title",title);
            values.put("content",content);
            values.put("time",time);
            switch (requestCode){
                case NEW_NOTE:
                    dbHelper.insertNotes(values);
                    break;
                case EDIT_NOTE:
                    dbHelper.updateNotes(old_title,values);
                    break;
            }
        }
        renderListView();
    }
}
LoginActivity.java
public class LoginActivity extends AppCompatActivity {
DBHelper dbHelper=new DBHelper(LoginActivity.this,"MyDatabase.db",2);
EditText et_username;
EditText et_password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        et_username=(EditText) findViewById(R.id.et_username_login);
        et_password=(EditText) findViewById(R.id.et_password_login);
        Button btn_login=(Button) findViewById(R.id.btn_login);
        Button btn_register=(Button) findViewById(R.id.btn_register);
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String username=et_username.getText().toString();
                String password=et_password.getText().toString();
                if (username.isEmpty()||password.isEmpty())
                    Toast.makeText(LoginActivity.this,"用户名或密码不能为空",Toast.LENGTH_SHORT).show();
                else {
                    if (dbHelper.queryUserByNameAndPass(username,password))
                    {
                        Intent intent=new Intent(LoginActivity.this,MainActivity.class);
                        startActivity(intent);
                    }
                    else Toast.makeText(LoginActivity.this,"用户名或密码错误",Toast.LENGTH_SHORT).show();
                }
            }
        });
        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);
                startActivity(intent);
            }
        });
    }
}
DBHelper.java
public class DBHelper extends SQLiteOpenHelper {
    final String CREATE_TABLE1="create table Users(_id integer primary  key autoincrement,username text,password text)";
    final String CREATE_TABLE1_NOTES="create table Notes(_id integer primary  key autoincrement,title text,content text ,time)";
    Context context;
    public DBHelper(Context context, String dbname, int version){
        super(context,dbname,null,version);
        this.context=context;
    }
    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(CREATE_TABLE1);
        db.execSQL(CREATE_TABLE1_NOTES);
        Toast.makeText(context,"创建成功",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
        db.execSQL("drop table if exists Users");
        db.execSQL("drop table if exists Notes");
        onCreate(db);
    }
    public void  insertUser(ContentValues values){
        SQLiteDatabase db=getWritableDatabase();
        db.insert("Users",null,values);
        db.close();
    }
    public void  insertNotes(ContentValues values){
        SQLiteDatabase db=getWritableDatabase();
        db.insert("Notes",null,values);
        db.close();
    }
    public Cursor queryAll(String dbname){
        SQLiteDatabase db=getWritableDatabase();
        Cursor cursor=db.query(dbname,null,null,null,null,null,null);
        return cursor;
    }
    public boolean queryUserByNameAndPass(String username,String password) {
        SQLiteDatabase db = getWritableDatabase();
        Cursor cursor = db.query("Users", null, "username=? and password=?", new String[]{username, password}, null, null, null);
        // Cursor cursor=db.rawQuery("select * from text where content='"+str+"'",null);
        if (cursor.moveToFirst()){
            return true;}
        else{
            return false;}
    }
    public boolean queryUserByName(String username){
        SQLiteDatabase db=getWritableDatabase();
        Cursor cursor=db.query("Users",null,"username=?",new String[]{username},null,null,null);
        // Cursor cursor=db.rawQuery("select * from text where content='"+str+"'",null);
        if (cursor.moveToFirst()){
            return true;}
        else{
            return false;}
    }
    public void deleteUser(String username){
        SQLiteDatabase db=getWritableDatabase();
        db.delete("Users","username=?",new String[]{username});
        db.close();
    }
    public void deleteNotes(String username){
        SQLiteDatabase db=getWritableDatabase();
        db.delete("Notes","title=?",new String[]{username});
        db.close();
    }
    public void updateUser(String username,ContentValues values){
        SQLiteDatabase db=getWritableDatabase();
        db.update("Users",values,"username=?",new String[]{username});
    }
    public void updateNotes(String title,ContentValues values){
        SQLiteDatabase db=getWritableDatabase();
        db.update("Notes",values,"title=?",new String[]{title});
    }
}
NewNotesActivity.java
public class NewNotesActivity extends AppCompatActivity {
EditText et_title;
EditText et_content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_notes);
        et_title=(EditText) findViewById(R.id.et_title);
        et_content=(EditText) findViewById(R.id.et_content);
        Intent oldIntent=getIntent();
        final String title=oldIntent.getStringExtra("title");
        final String content=oldIntent.getStringExtra("content");
        et_title.setText(title);
        et_content.setText(content);
        Button btn_submit=(Button) findViewById(R.id.btn_submit);
        btn_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.putExtra("old_title",title);
                intent.putExtra("title",et_title.getText().toString());
                intent.putExtra("content",et_content.getText().toString());
                setResult(RESULT_OK,intent);
                finish();
            }
        });
    }
}
RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
    DBHelper dbHelper=new DBHelper(RegisterActivity.this,"MyDatabase.db",2);
    EditText et_username;
    EditText et_password;
    EditText et_password2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        et_username=(EditText) findViewById(R.id.et_username_register);
        et_password=(EditText) findViewById(R.id.et_password_register);
        et_password2=(EditText) findViewById(R.id.et_password_confirm);
        Button btn_ok=(Button) findViewById(R.id.btn_ok);
        Button btn_cancel=(Button) findViewById(R.id.btn_cancel);
        btn_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String username=et_username.getText().toString();
                String password=et_password.getText().toString();
                String password2=et_password2.getText().toString();
                if (username.isEmpty()||password.isEmpty()||password2.isEmpty()){
                    Toast.makeText(RegisterActivity.this,"用户名,密码或确认密码不能为空",Toast.LENGTH_SHORT).show();}
                else if (!password.equals(password2)){
                    Toast.makeText(RegisterActivity.this,"密码和确认密码不一致",Toast.LENGTH_SHORT).show();
                }
                else if (dbHelper.queryUserByName(username))
                    Toast.makeText(RegisterActivity.this,"用户名不能重复",Toast.LENGTH_SHORT).show();
                else {
                    ContentValues contentValues=new ContentValues();
                    contentValues.put("username",username);
                    contentValues.put("password",password);
                    dbHelper.insertUser(contentValues);
                    Toast.makeText(RegisterActivity.this,"插入用户"+username+"成功",Toast.LENGTH_SHORT).show();
                }
            }
        });
        btn_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值