【发布时间】:2019-08-08 14:39:01
【问题描述】:
我在列表视图中有一些记录,当我长按列表的特定项目时,我想更新和删除这些记录。 Like this structure DBHelper1DBHelper2DBHelper3DBHelper4DBHelper5 DBHelper6
包 com.example.loginproject.model; 公共类记录 {
String lead;
String name;
String mobile;
public Record(String lead, String name, String mobile) {
this.lead = lead;
this.name = name;
this.mobile = mobile;
}
public String getLead() {
return lead;
}
public Record(){}
public void setLead(String lead) {
this.lead = lead;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}}
公共类 MyAdapter 扩展 BaseAdapter {
Context context;
ArrayList<Record> arrayList;
public MyAdapter(Context context,ArrayList<Record>arrayList){
this.context=context;
this.arrayList=arrayList;
}
@Override
public int getCount() {
return this.arrayList.size();
}
@Override
public Object getItem(int position) {
return arrayList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView= layoutInflater.inflate(R.layout.custom_list_view,null);
TextView textView1 =(TextView)convertView.findViewById(R.id.textview_leads);
TextView textView2 =(TextView)convertView.findViewById(R.id.textview_names);
TextView textView3 =(TextView)convertView.findViewById(R.id.textview_company);
Record record=arrayList.get(position);
textView1.setText(record.getLead());
textView2.setText(record.getName());
textView3.setText(record.getMobile());
return convertView;
}
}
公共类 Home 扩展 AppCompatActivity {
TextView Name;
Button refresh,addlead;
DatabaseHelper databaseHelper;
SQLiteOpenHelper sqLiteOpenHelper;
SQLiteDatabase db;
ListView listView;
MyAdapter myAdapter;
ArrayList<Record>arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Name=(TextView)findViewById(R.id.Name);
addlead=(Button)findViewById(R.id.addlead);
refresh=(Button)findViewById(R.id.viewlead);
listView=(ListView)findViewById(R.id.list_view);
sqLiteOpenHelper=new DatabaseHelper(this);
db=sqLiteOpenHelper.getReadableDatabase();
databaseHelper=new DatabaseHelper(this);
arrayList=new ArrayList<>();
loaddatainlist();
registerForContextMenu(listView);
Name.setText(getIntent().getStringExtra(MainActivity.user));
refresh();
add_lead();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.mybutton) {
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setMessage("Are you really want to Logout ?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"Logout Successfully",Toast.LENGTH_SHORT).show();
finish();
//startActivity(new Intent(Home.this,MainActivity.class));
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alertDialog=builder.create();
alertDialog.show();
}
return super.onOptionsItemSelected(item);
}
public void add_lead()
{
addlead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Home.this,Registration.class));
}
});
}
private void loaddatainlist()
{
arrayList=databaseHelper.getalldata();
myAdapter=new MyAdapter(this,arrayList);
listView.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.listoption,menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.editoption:
{
startActivity(new Intent(Home.this, Update.class));
}
case R.id.deleteoption:
{
Toast.makeText(this, "Delete", Toast.LENGTH_SHORT).show();
}
return true;
default:
return super.onContextItemSelected(item);
}
}
public void refresh()
{
refresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
startActivity(getIntent());
}
});
}
}
公共类更新扩展 AppCompatActivity {
EditText lead,name,company,mobile,address;
Button update;
DatabaseHelper databaseHelper;
SQLiteDatabase dataBase;
ImageButton getrecord;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
databaseHelper=new DatabaseHelper(this);
lead=(EditText)findViewById(R.id.lead);
name=(EditText)findViewById(R.id.updatename);
company=(EditText)findViewById(R.id.updatecompany_name);
address=(EditText)findViewById(R.id.updateaddress);
mobile=(EditText)findViewById(R.id.updatemobile);
update=(Button)findViewById(R.id.update_button);
}
}
我显示了我存储在数据库中的所有记录,但我无法更新它。
【问题讨论】:
-
我正在尝试分享代码,但在我发布时它给出了一些错误。
-
您好,我发布了代码,您可以检查一下吗。
-
您能否告诉我们您面临或无法实施的确切问题是什么?
-
如果您通过提及您在上述代码 sn-ps 中使用的 UI 组件来详细说明您的要求,那也很好。
-
当我长按列表的任何一行时,我创建了两个选项更新和删除,当我点击更新时,它将继续另一个更新的活动,这里我想要这一行的所有值我保存在数据库中将在更新任何特定行后预填充。