【发布时间】:2017-09-02 07:03:43
【问题描述】:
这就是我显示我的列表视图的方式,我不确定这是否是正确的方法来显示我的列表视图。问题是当我的“CondimentDescription”有多个数据时,我的列表视图会有重复数据,以下是我的代码,请指教。
The ListView show like this, but this is not what I want.
This is what I want
public List<OrderList> getOrderList() {
List<OrderList> OrderList = new ArrayList<OrderList>();
try {
String selectQuery = "select t2.Id,t2.ProductCode,t2.Price,t2.Qty,t3.Description,t4.condimentDescription from TempCS t1 \n" +
"left outer join TempCSDetail t2 on t1.DocNo=t2.Docno\n" +
"left outer join mProduct t3 on t2.ProductCode=t3.Code \n" +
"left outer join TempCSCondiment t4 on t2.SeqNo=t4.SeqNo"+
"where t1.DocNo=" + TablePageDocNo + "\n";
SQLiteDatabase db1 = db.getReadableDatabase();
Cursor cursor = db1.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
OrderList list = new OrderList();
list.setProductCode(cursor.getString(cursor.getColumnIndex("ProductCode")));
list.setPrice(Double.parseDouble(cursor.getString(cursor.getColumnIndex("Price"))));
list.setQty(cursor.getString(cursor.getColumnIndex("Qty")));
list.setDescription(cursor.getString(cursor.getColumnIndex("Description")));
list.set_ID(Integer.parseInt(cursor.getString(cursor.getColumnIndex("ID"))));
//this will more than 1 row in my Sqlite database
list.setCondimentDescription(cursor.getString(cursor.getColumnIndex("CondimentDescription")));
OrderList.add(list);
} while (cursor.moveToNext());
}
}catch(Exception e){
}
return OrderList;
}
适配器列表
public class OrderListAdapter extends BaseAdapter {
LayoutInflater mInflater;
public OrderListAdapter() {
mInflater = LayoutInflater.from(ListFragmentActivity.this);
}
@Override
public int getCount() {
return orderlist.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listproduct1, null);
}
final TextView _ID = (TextView) convertView.findViewById(R.id.proID);
_ID.setText("" + orderlist.get(position).get_ID());
final String proID = _ID.getText().toString();
final TextView ProductCode = (TextView) convertView.findViewById(R.id.productcode);
ProductCode.setText("" + orderlist.get(position).getProductCode());
final TextView Description = (TextView) convertView.findViewById(R.id.description);
Description.setText("" + orderlist.get(position).getDescription());
final TextView Price = (TextView) convertView.findViewById(R.id.price);
Price.setText("" + String.format("%.2f",orderlist.get(position).getPrice()));
final Double price= Double.valueOf(Price.getText().toString());
final TextView Qty = (TextView) convertView.findViewById(R.id.qty);
Qty.setText("" + orderlist.get(position).getQty());
final TextView condimentDescription=(TextView)convertView.findViewById(R.id.condimentDescription);
condimentDescription.setText("" + orderlist.get(position).getCondimentDescription());
notifyDataSetChanged();
return convertView;
}
}
【问题讨论】:
-
你调试过你的代码吗?检查数据来自数据库的次数,或者它可能来自数据库的重复。检查你的结果
-
ya这是因为数据库中的重复数据,所以我想知道如何解决它。
-
然后更改您的查询
-
不知道怎么改成正确的查询,请指教。
-
问题是""left outer join TempCSCondiment t4 on t2.SeqNo=t4.SeqNo"",因为我的 t4.condimentDescription 将有超过 1 项,所以这使我的列表视图显示重复