实现效果:
界面布局:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="@drawable/background_h">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="记事本"
android:id="@+id/title"
android:textSize="30sp"
android:textColor="@color/white"
android:background="#F191D9"
android:gravity="center"
/>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/title"
android:id="@+id/listview"/>
<ImageView
android:id="@+id/add"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/add"
/>
</RelativeLayout>
activity_record.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=".RecordActivity"
android:background="@drawable/background_h">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#ED8EE4"
>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/backHome"
android:src="@drawable/back">
</ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记事本"
android:textSize="30sp"
android:textColor="@color/white"
android:layout_centerHorizontal="true"
android:id="@+id/title">
</TextView>
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/show_time"
android:textColor="#CD4AB7"
android:layout_gravity="center"
android:text="显示时间"
android:visibility="invisible"
android:textSize="30sp">
</TextView>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<EditText
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity=""
android:hint="请输入文本信息"
android:textColorHint="#DF2BEC"
android:textSize="25sp"></EditText>
</TableRow>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<ImageView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/delete"
android:src="@drawable/delete">
</ImageView>
<ImageView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/save_note"
android:src="@drawable/save_note">
</ImageView>
</LinearLayout>
</LinearLayout>
item_layout.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="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/itm_content"
android:text="文本信息。。。。"
android:textColor="@color/black"
android:textSize="20dp"
android:maxLines="2"
android:ellipsize="end"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/item_time"
android:text="时间"
android:textColor="#DF55E9"
android:textSize="15dp">
</TextView>
</LinearLayout>
java代码:
package cn.itcast.study;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ImageView add;
private MyDBHelper myDBHelper;
private MyAdapter myAdapter;
private List<Note> resulList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listview);
add = findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//点击添加按钮,跳转到recoractivate页面进行数据添加
Intent intent = new Intent(MainActivity.this, RecordActivity.class);
//数据回传:跳转之后,期望第二个页面回传数据
startActivityForResult(intent, 1);
}
});
//数据初始化
init();
//设置列表项的点击监听器
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//当列表项被点击时对该项的内容进行修改
Note note = (Note) myAdapter.getItem(i);
//创建意图,将用户选中的内容传递到修改页面
Intent intent = new Intent(MainActivity.this,RecordActivity.class);
String sendId = note.getId();
String sendContent = note.getContent();
String sendTime = note.getNote_time();
intent.putExtra("id",sendId);
intent.putExtra("content",sendContent);
intent.putExtra("time",sendTime);
startActivityForResult(intent,1);
}
});
//列表项长按监听器,删除对应项内容
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//确定要删除的几率是那一条
//对话框删除
AlertDialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("删除记录")
.setMessage("你确定要删除这条记录吗")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int a) {
Note note = (Note) myAdapter.getItem(i);
String deleteId = note.getId();
myDBHelper.deleteData(deleteId);
if (myDBHelper.deleteData(deleteId)) {
init();
Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show();
}
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialog.dismiss();
}
})
.create()
.show();
return true;
}
});
}
//查询数据库内容,将表中的数据显示在listView上面
private void init() {
if (resulList != null) {
resulList.clear();
}
myDBHelper = new MyDBHelper(MainActivity.this, "note.db", null, 1);
resulList = myDBHelper.query();
myAdapter = new MyAdapter(resulList, MainActivity.this);
listView.setAdapter(myAdapter);
}
//将数据回传时自动执行的方法,用于接受回传过来的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == 2) {
//说明数据的添加是正常执行的,数据库新增一条记录,主页中listView的内容就应该更新一下
init();
}
}
}
这段代码是一个Android应用中的主Activity,用于显示记事本的主界面,并实现了一些基本的功能,包括添加、修改和删除笔记等操作。
在onCreate方法中,首先通过findViewById方法获取了布局文件中的ListView和ImageView控件,并为ImageView添加了点击事件监听器,用于跳转到添加笔记的页面。然后调用了init方法进行数据的初始化,并为ListView设置了点击和长按的监听器,用于处理笔记的查看、修改和删除操作。
在init方法中,首先清空了resulList(笔记列表数据),然后实例化了MyDBHelper对象用于数据库操作,并调用了query方法查询数据库中的笔记数据,最后使用自定义的MyAdapter将查询到的数据显示在ListView中。
另外,还实现了onActivityResult方法,用于接收从其他页面返回的数据,当requestCode为1且resultCode为2时,表示数据添加操作成功,此时需要调用init方法刷新ListView中的数据。
总的来说,这段代码实现了一个记事本应用的主界面功能,包括添加、修改和删除笔记等操作。