根据以下要求写代码:5.1 程序功能实现步骤: 创建界面布局文件,包括文本框、按钮等控件; 在Activity中获取各个控件的引用,并设置事件监听器; 实现合法性检查方法,判断姓名是否填写; 使用SQLiteOpenHelper建立数据库连接或打开已有数据库; 在数据库中创建名为"peopleinfo"的表,包括id(自动增长)、name、gender、major和hobby字段; 实现ContentProvider,其中包括必须实现的query()、insert()、update()和delete()方法; ContentProvider的authorities字符串设为mc.lab_5_1.peopleprovider; 在插入数据时使用ContentValues将信息添加到数据库中; 在提交成功后提示用户,并清空界面上的输入数据。 5.2 程序功能实现步骤: 创建界面布局文件,包括一个列表控件; 使用ContentResolver读取实验5.1应用程序中所实现的ContentProvider并显示在列表中; 设置列表项的点击事件监听器,在点击某一项时启动确认删除的子Activity,需要传递对应记录的URI; 在确认删除的子Activity中实现“确认”和“取消”按钮的事件监听器,根据用户点击的不同进行相应操作; 点击“确认”按钮后,通过ContentResolver删除相应记录,并在界面中删除对应列表项。要求专业是从下滑列表中(计算机科学与技术,信息安全,大数据与数据科学)中选择
时间: 2024-03-11 18:50:40 浏览: 107
好的,根据您的要求,以下是一个简单的实现步骤:
1. 创建界面布局文件,在其中添加文本框、按钮和列表控件等控件,布局可以参照设计要求。
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:" />
<EditText
android:id="@+id/name_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入姓名" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:" />
<RadioGroup
android:id="@+id/gender_radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/male_radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/female_radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" />
</RadioGroup>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="专业:" />
<Spinner
android:id="@+id/major_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/major_array" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好:" />
<EditText
android:id="@+id/hobby_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入爱好" />
<Button
android:id="@+id/submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交" />
<ListView
android:id="@+id/people_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
```
2. 在Activity中获取各个控件的引用,并设置事件监听器。
```
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText mNameEditText;
private RadioGroup mGenderRadioGroup;
private Spinner mMajorSpinner;
private EditText mHobbyEditText;
private Button mSubmitButton;
private ListView mPeopleListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNameEditText = findViewById(R.id.name_edittext);
mGenderRadioGroup = findViewById(R.id.gender_radiogroup);
mMajorSpinner = findViewById(R.id.major_spinner);
mHobbyEditText = findViewById(R.id.hobby_edittext);
mSubmitButton = findViewById(R.id.submit_button);
mPeopleListView = findViewById(R.id.people_listview);
mSubmitButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == mSubmitButton) {
if (checkValidity()) {
insertData();
}
}
}
private boolean checkValidity() {
String name = mNameEditText.getText().toString();
if (TextUtils.isEmpty(name)) {
Toast.makeText(this, "姓名不能为空", Toast.LENGTH_SHORT).show();
return false;
}
return true;
}
private void insertData() {
// 使用ContentValues将信息添加到数据库中
// 在提交成功后提示用户,并清空界面上的输入数据
}
}
```
3. 实现合法性检查方法,判断姓名是否填写。
在上面的代码中,我们实现了一个checkValidity()方法,用来检查姓名是否为空。如果姓名为空,我们会弹出一个Toast提示用户。
4. 使用SQLiteOpenHelper建立数据库连接或打开已有数据库。
我们可以创建一个继承自SQLiteOpenHelper的类,用来创建和升级数据库。在onCreate()方法中,我们可以创建名为"peopleinfo"的表,包括id(自动增长)、name、gender、major和hobby字段。在insertData()方法中,我们可以使用ContentValues将输入的信息添加到数据库中。
5. 实现ContentProvider,其中包括必须实现的query()、insert()、update()和delete()方法。
我们可以创建一个继承自ContentProvider的类,实现query()、insert()、update()和delete()方法。在其中,我们可以使用SQLiteOpenHelper打开数据库,并执行相应的操作。
6. ContentProvider的authorities字符串设为mc.lab_5_1.peopleprovider。
ContentProvider的authorities字符串需要在AndroidManifest.xml中进行注册,如下所示:
```
<provider
android:name=".PeopleProvider"
android:authorities="mc.lab_5_1.peopleprovider" />
```
7. 在插入数据时使用ContentValues将信息添加到数据库中。
在insertData()方法中,我们可以使用ContentValues将输入的信息添加到数据库中,如下所示:
```
ContentValues values = new ContentValues();
values.put("name", mNameEditText.getText().toString());
values.put("gender", mGenderRadioGroup.getCheckedRadioButtonId() == R.id.male_radiobutton ? "男" : "女");
values.put("major", mMajorSpinner.getSelectedItem().toString());
values.put("hobby", mHobbyEditText.getText().toString());
getContentResolver().insert(Uri.parse("content://mc.lab_5_1.peopleprovider/peopleinfo"), values);
Toast.makeText(this, "提交成功", Toast.LENGTH_SHORT).show();
mNameEditText.setText("");
mGenderRadioGroup.clearCheck();
mMajorSpinner.setSelection(0);
mHobbyEditText.setText("");
```
8. 创建子Activity,用于确认删除操作。
我们可以创建一个ConfirmDeleteActivity,用于显示确认删除的界面。在其中,我们可以显示要删除的记录的详细信息,并提供"确认"和"取消"按钮,根据用户点击的不同进行相应操作。在点击"确认"按钮后,我们可以通过ContentResolver删除相应记录,并在界面中删除对应列表项。
以上是一个简单的实现步骤,具体实现细节需要根据实际情况进行调整。
阅读全文