本次任务是学会Android Listview控件的使用
点击查询能查询到所有注册用户的用户名
输入框输入用户名会进行删除操作
就像图片显示的那样 ListView的简单使用
首先先在登录成功的界面创建一个menu菜单
package cx.study.demo_01;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class RegisteredActivity extends AppCompatActivity {
private String date;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registered);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.admin:
final EditText editText = new EditText(this);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("请输入管理员密码");
builder.setView(editText);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
date = editText.getText().toString();
if (date.equals("admin")) {
Intent intent = new Intent(RegisteredActivity.this,
AdminActivity.class);
startActivity(intent);
} else {
Toast.makeText(RegisteredActivity.this, "管理员密码错误",
Toast.LENGTH_SHORT).show();
}
}
});
builder.setNegativeButton("取消", null);
builder.show();
break;
}
return true;
}
}
点击管理员会弹AlertDialog 有一个输入框,只有输入admin才会跳转到管理员界面
然后需要在SQLDate类里添加查询名字方法和根据名字删除用户信息的方法
public List<User_Data> Query_All_Name() {
List<User_Data> mUser_data = new ArrayList<>();
User_Data user;
Cursor cursor = db.query(SqliteDataHelper.TABLE_NAME, new String[]{"User_Name"}, null,
null, null, null, null);
if (cursor != null && cursor.getCount() > 0) {
while (cursor.moveToNext()) {
if (cursor.getString(cursor.getColumnIndex(SqliteDataHelper.USER_NAME)) != null) {
user = new User_Data();
user.setName(cursor.getString(cursor.getColumnIndex(SqliteDataHelper.USER_NAME)));
mUser_data.add(user);
}
}
}
return mUser_data;
}
public int delete_for_name(String name) {
return db.delete(SqliteDataHelper.TABLE_NAME, "User_Name=?", new String[]{name});
}
然后就是从数据库获取用户信息 显示到ListView上,这里需要用到Adapter(适配器)
ListView需要继承BaseAdapter完成需要完成的方法
package cx.study.demo_01.Adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
import cx.study.demo_01.R;
import cx.study.demo_01.SqLite.User_Data;
/**
* @ProjectName: demo_01
* @Package: cx.study.demo_01.Adapter
* @ClassName: ListViewAdapter
* @Author: ZYH
* @CreateDate: 2020/5/10 0010 21:26
* @Version: 1.0
* @Description: java类作用描述
*/
public class ListViewAdapter extends BaseAdapter {
private Context mContext;
private List<User_Data> mUser_data;
public ListViewAdapter(Context mContext, List<User_Data> mUser_data) {
this.mContext = mContext;
this.mUser_data = mUser_data;
}
// 数据数量
@Override
public int getCount() {
return mUser_data.size();
}
// 第几个item
@Override
public Object getItem(int position) {
return mUser_data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder mViewHolder;
if (convertView == null) {
mViewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_listview, parent,
false);
mViewHolder.mTextView = convertView.findViewById(R.id.id_item_user_name);
convertView.setTag(mViewHolder);
} else {
mViewHolder = (ViewHolder) convertView.getTag();
}
mViewHolder.mTextView.setText(mUser_data.get(position).getName());
Log.e("TAG", "getView: " + mUser_data.get(position).getName());
return convertView;
}
class ViewHolder {
TextView mTextView;
}
}
剩下的就是给ListView设置Adapter
package cx.study.demo_01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.List;
import cx.study.demo_01.Adapter.ListViewAdapter;
import cx.study.demo_01.SqLite.SQLDate;
import cx.study.demo_01.SqLite.User_Data;
public class AdminActivity extends AppCompatActivity {
private ListView listView;
private EditText ed_date;
private SQLDate mSqlDate;
private ListViewAdapter mAdapter;
private static final String TAG = "AdminActivity";
private List<User_Data> user_data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin);
initViews();
}
private void initViews() {
listView = findViewById(R.id.listview);
ed_date = findViewById(R.id.ed_UserName);
mSqlDate = new SQLDate(AdminActivity.this);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.id_btn_query:
QueryAll();
break;
case R.id.id_btn_del:
final int i = mSqlDate.delete_for_name(ed_date.getText().toString());
if (i > 0) {
Toast.makeText(AdminActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
QueryAll();
} else {
Toast.makeText(AdminActivity.this, "删除失败", Toast.LENGTH_SHORT).show();
}
break;
}
}
private void QueryAll() {
user_data = mSqlDate.Query_All_Name();
mAdapter = new ListViewAdapter(AdminActivity.this, user_data);
listView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
}
}
有关ListView的视频讲解在阶段二的步骤二高级控件的ListView
视频接着看。学习进度不要停