gpt4 book ai didi

java - 查看 ListView 内容时出现问题

转载 作者:行者123 更新时间:2023-11-29 15:54:06 25 4
gpt4 key购买 nike

编辑和删除 ListView 中的项目,但问题是当我想查看我的列表时应用程序崩溃

我已经发现问题出在第 34 行,因为“user”的值为 null

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;
}

debug PageUser

我想解决这个问题才能看到列表

最佳答案

尝试创建单独的变量并首先将光标数据分配给这些变量,然后使用这些变量创建用户。您可以使用 new User() 调用 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);
}
}

关于java - 查看 ListView 内容时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56595272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com