Я думаю, что я нашел причину/или одну из причин, почему элемент из списка, который выбран, не удалит себя из базы данных. При создании строк базы данных каждый идентификатор get get и каждый раз, когда он равен ID + 1 для новой строки. Я расскажу о проблеме, используя пример:Выбор элемента из списка ListView (ListView показывает базу данных) и удаление его из списка и из базы данных
У меня есть 5 строк в моей базе данных (5 сотрудников), и каждый работодатель получает идентификатор автоматически, когда он добавляется в базу данных. Итак, у меня есть ID 1,2,3,4,5. Когда я удаляю первую строку (ID = 1), у меня есть 4 строки слева - 2,3,4,5, и они не «реорганизуют» себя на 1,2,3,4. Поэтому использование параметра «long id» из метода «onItemClick» не работает, так как я получаю ID = 0 для щелчка на первом занятии в списке, но ТОЛЬКО Впервые в моей базе данных нет ID = 0, но ID = 2 так как я удалил сотрудника с ID = 1 раньше. При нажатии на второе занятие в списке, я получаю ID = 1, а второй занятый в базе данных ID = 3.
Есть ли способ сделать базу данных всегда использовать идентификаторы от 1 до -n, то есть, если я удалю использование с ID = 1 из примера, есть ли способ сделать базу данных для изменения ID, так что это не 2,3,4,5 после удаления ID = 1, но 1,2,3,4 снова ??Я проверяю все остальные вопросы и ответы, подобные моей проблеме, но ничто из этого не работает для меня. В MainActivity при нажатии на кнопку он переключается на вторую активность и вторую компоновку. В этом втором действии я использую адаптер для отображения списка базы данных. Мой список есть, но я не могу нажать на любой элемент и удалить его. Я пробовал слушать, listActivity и т. Д., Но ничего не работает. Я все еще учился, поэтому, пожалуйста, проявляйте терпение.
Я хочу показать этот список в макете, и когда пользователь нажимает на один из элементов, его спрашивают, хочет ли он удалить, и если он хочет, то выбранный элемент удаляется из списка и из базы данных.
Моя вторая активность:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.List;
public class RemoveEmploye extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.del_layout);
final Database db=new Database(this);
final ListView lv = (ListView)findViewById(R.id.delEmployeList);
List<Employe> employes = db.selectAll();
ArrayAdapter<Employe> adapter = new ArrayAdapter<>
(this,android.R.layout.simple_list_item_1, android.R.id.text1, employes);
lv.setAdapter(adapter);
}
public void goBack(View v) {
Intent in= new Intent(RemoveEmploye.this,MainActivity.class);
startActivity(in);
}
Моя вторая раскладка (del_layout.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.EmDatabase.RemoveEmploye">
<ListView
android:layout_width="wrap_content"
android:layout_height="527dp"
android:id="@+id/delEmployeList">
</ListView>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/back"
android:clickable="true"
android:onClick="goBack"/>
</LinearLayout>
Моя база данных SelectAll() является:
public List<Employe> selectAll() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query("EmployeDB", new String[] { ID, NAME, SURNAME, AGE,
COMPANY, WTYPE}, null, new String[] { }, null, null, null, null);
String name="";
String surname="";
String age="";
String company="";
String wtype="";
int id=0;
ArrayList<Employe> employes =new ArrayList<Employe>();
if(cursor.moveToFirst()) {
do {
id= Integer.parseInt(cursor.getString(0));
name= cursor.getString(1);
surname= cursor.getString(2);
age= cursor.getString(3);
company= cursor.getString(4);
wtype= cursor.getString(5);
Employe e= new Employe();
e.setId(id);
e.setName(name);
e.setSurname(surname);
e.setAge(Integer.parseInt(age));
e.setCompany(company);
e.setWorktype(wtype);
employes.add(e);
} while (cursor.moveToNext());
}
return employes;
}
предоставьте xml вашего элемента списка – Malik
Malik, я предоставил файл del_layout.xml, который я использую для отображения listview, его имя в моем сообщении как Second_layout – Mystiq
ah, no. теперь я вижу ... вы используете android listViewItem. вам нужно создать собственный макет listViewItem, а затем вы можете использовать мой awnser – Malik