Проблема с просмотром содержимого моего списка - PullRequest
0 голосов
/ 14 июня 2019

редактировать и удалять элементы в списке, но проблема в том, что приложение вылетает, когда я хочу увидеть свой список

Я уже видел, что проблема в строке 34, потому что значение "user" равно нулю

public class PageUser extends AppCompatActivity {

    ArrayList<User> userList;
    ListView listView;
    User user;
    DatabaseHelper mDatabaseHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.page_user);
        mDatabaseHelper = new DatabaseHelper(this);
        userList = new ArrayList<>();
        Cursor data = mDatabaseHelper.getListContents();
        int numRows = data.getCount();
        if (numRows == 0) {
            Toast.makeText(PageUser.this, "Aucun utilisateur enregistré !", Toast.LENGTH_LONG).show();
        } else {
            int i = 0;
            while (data.moveToNext()) {
                user = new User( data.getString(1), data.getString(2), data.getString(3)); //The problem is here
                userList.add(i, user);
                System.out.println(data.getString(1) + " " + data.getString(2) + " " + data.getString(3));
                i++;
            }
            UserAdaptater adapter = new UserAdaptater(this, R.layout.user_cell, userList);
            listView = (ListView) findViewById(R.id.maListe);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    String recupID = userList.get(i).getID();
                    String recupNom = userList.get(i).getNom();
                    String recupPrenom = userList.get(i).getPrenom();
                    Intent intent = new Intent(PageUser.this, EditUser.class);
                    intent.putExtra("ID",recupID);
                    intent.putExtra("name",recupNom);
                    intent.putExtra("fname",recupPrenom);
                    startActivity(intent);
                }
            });
        }
    }

    public void page_ajouter(View view){
        startActivity(new Intent(this, AddUser.class));
    }
}

это пользовательский класс

пакет com.example.changepage;

public class User {

private String ID;
private String nom;
private String prenom;

public User(String id, String nom, String prenom) {
    this.ID = id;
    this.nom = nom;
    this.prenom = prenom;
}

public String getID() {
    return ID;
}

public void setID(String ID) {
    this.ID = ID;
}

public String getNom() {
    return nom;
}

public void setNom(String nom) {
    this.nom = nom;
}

public String getPrenom() {
    return prenom;
}

public void setPrenom(String prenom) {
    this.prenom = prenom;
}
}

и моя функция getListContents

public Cursor getListContents() {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
    return data;
}

отладка PageUser

Я хочу исправить эту проблему, чтобы увидеть список

1 Ответ

0 голосов
/ 14 июня 2019

Попробуйте создать отдельные переменные и сначала присвоить им данные курсора, а затем создать пользователя с ними.Вы можете вызвать add с новым пользователем ().

Также имейте в виду, что ваш первый индекс (для _id) равен 1!Это правильно?Может начинаться с 0. Вот почему я спрашивал, что возвращает функция getListContents ();как в том, как выглядит структура данных.

String _id = "";
String _nom = "";
String _prenom = "";

while (data.moveToNext()) {
    _id = data.getString(1);
    _nom = data.getString(2);
    _prenom = data.getString(3);

    if(_id == null || _nom == null || _prenom == null) {
        System.out.println("Database field is null!");
    }
    else {
        userList.add( new User( _id, _nom, _prenom));
        System.out.println(_id  + " " + _nom  + " " + _prenom);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...