【发布时间】:2019-04-16 13:10:00
【问题描述】:
这段代码向我显示了一些来自数据库的意外数据,但不完全是一个一个,有时显示相同的数据 10 次,有什么办法可以解决这个问题?
listItem = new ArrayList<>();
customAdapter customAdapter = new customAdapter();
userlist = v.findViewById(R.id.lisview);
userlist.setDivider(null);
userlist.setAdapter(customAdapter);
我的自定义适配器
class customAdapter extends BaseAdapter {
@Override
public int getCount() {
int cursor = databaseHelper.getAllServiceAll().getCount();
return cursor;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = getLayoutInflater().inflate(R.layout.customlayout, null);
TextView showprice = view.findViewById(R.id.showprice);
TextView showliters = view.findViewById(R.id.showLiters);
TextView showdata = view.findViewById(R.id.showdata);
TextView showvalute = view.findViewById(R.id.showvalute);
Cursor cursor = databaseHelper.getAllServiceAll();
cursor.moveToFirst();
cursor.moveToNext();
String formula4S = new DecimalFormat("#0.00").format(Float.parseFloat(cursor.getString(2)));
showprice.setText(formula4S); // Price
showdata.setText(cursor.getString(3) ); // data
showvalute.setText("" + databaseHelper.getValute ()); // Valute
showliters.setText(cursor.getString(1) ); // Liters
return view;
}
}
DatabaseHelper.java:
public Cursor getAllServiceAll (){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("SELECT * FROM servis ORDER BY id DESC LIMIT 10", null);
return res;
}
【问题讨论】:
-
你为什么不用
SimpleCursorAdapter? -
为什么不能只将列表从片段/活动传递给适配器并将计数作为列表的大小返回。
-
showvalue.setText("" + databaseHelper.getValute ()); // 值
-
另外,您在
getView()方法中使用Cursor cursor = databaseHelper.getAllServiceAll(); cursor.moveToFirst(); cursor.moveToNext();代码。用户滚动列表时可能会导致问题。 -
SimpleCursorAdapter 怎么用?