我为我的ListView创建了一个适配器,它显示了我的SQLite数据库中的数据,问题是在ListView中,我有5次相同的行: 我的适配器代码:
public class MyAdapter extends ArrayAdapter<Historique> {
private LayoutInflater mInflat;
private ArrayList<Historique> hist = new ArrayList<Historique>();
private int mVRessId;
public MyAdapter (Context context, int ressId, ArrayList<Historique> hists){
super(context,ressId,hists);
this.hist =hists;
mInflat = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mVRessId =ressId;
}
public View getView(int position, View convertedView, ViewGroup parents){
convertedView = mInflat.inflate(mVRessId,null);
Historique histor = hist.get(position);
if (histor != null){
TextView name = (TextView) convertedView.findViewById(R.id.hnom);
TextView quest = (TextView) convertedView.findViewById(R.id.hques);
TextView rep = (TextView) convertedView.findViewById(R.id.hrep);
TextView date = (TextView) convertedView.findViewById(R.id.hdate);
if (name != null){
name.setText(""+histor.getNom()+ ": "+histor.getLigne());
}
if (quest != null){
quest.setText(histor.getQuest());
}
if (rep != null){
rep.setText(histor.getRep());
}
if (date != null){
date.setText(histor.getDate().toString());
}
}
return convertedView;
}
}
ListView必须显示列表,这里是代码:
final MyAdapter adapter = new MyAdapter (this, R.layout.adapter_view_layout,histList);
mCsr = openhelper.getTableHistoAsCursor();
int rows = mCsr.getCount();
if (rows == 0 ){
Toast.makeText(Historian.this, "Pas d'historique disponible", Toast.LENGTH_SHORT).show();
} else {
while (mCsr.moveToNext()){
histo = new Historique(mCsr.getString(0).toString(),mCsr.getString(1).toString(), mCsr.getString(2).toString(),mCsr.getString(3).toString(),mCsr.getString(4).toString());
histList.add(histo);
}
}
mListView .setAdapter(adapter);
getTableHisto是一个从我的SQLite Modelhelper返回游标的函数:
public Cursor getTableHistoAsCursor() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor data = db.rawQuery(" SELECT Q." + KEY_QUESTION + " ,L." + KEY_LIGNE + " , U." + KEY_NOM + " , A." + KEY_DATE + " , A. " + KEY_REPONSE + " from "+ TABLE_LIGNE + " L, " + TABLE_QUESTION + " Q, " + TABLE_USER + " U, " + TABLE_ANSWER + " A WHERE Q." + KEY_ID_QUESTION + " = A." + KEY_ID_QUESTION + " AND A." + KEY_MATRICULE + " = U." + KEY_MATRICULE, null);
return data;
}
第一次,我认为在插入中我做错了,它在数据库中出现了5次,所以我创建了一个活动来尝试使用Select count()来获取插入数量; 我看到我得到的结果是真实结果,我没有插入相同行的5次,但适配器在5行中显示5次。 如果您有任何想法可以帮助我,我会很感激。 感谢。
答案 0 :(得分:0)
我明白了,问题解决了,如果有人有同样的问题,循环不好,所以我改了
display:none
通过
else {
while (mCsr.moveToNext()){
答案 1 :(得分:0)
//Initialize my adapter after populating the list
histList.add(histo);
仅在填充数组列表中的值后初始化适配器 没有空值。
final MyAdapter adapter = new MyAdapter (this, R.layout.adapter_view_layout,histList);
mListView .setAdapter(adapter);