Rub*_*r19 5 java sqlite android expandablelistview
我有表收据和日志和表收据has_many日志.因此,在我的LogsRecapitulation.class上,我按分类和等级对这些日志进行分组(这两列来自表日志).
我试图通过ExpandableListView来做到这一点.每组日志父元素将包含数据库中每个组的排序和等级.
子元素将具有textViews,用于记录子元素,质量,价格和一些计算价格的日志.它应该看起来像这样:
我创建了expandableListView布局和适配器.但是现在我在填充数据库中的父元素和子元素时遇到了麻烦.
这是我的代码,所以你可以看到我到目前为止所做的工作.
这是expandableListAadapter类:
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<String> _listDataHeader;
private HashMap<String, List<String>> _listDataChild;
public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listDataChild) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listDataChild;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition)).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.expendable_items, null);
}
TextView logsMass = (TextView) convertView.findViewById(R.id.exp_lis_mass);
TextView logsPrice = (TextView) convertView.findViewById(R.id.exp_lis_price);
TextView logsMassPrice = (TextView) convertView.findViewById(R.id.ext_lis_sum_price);
logsMass.setText(childText);
logsPrice.setText(childText);
logsMassPrice.setText(childText);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition)).size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.expandable_group, null);
}
TextView logsSort = (TextView) convertView.findViewById(R.id.exp_gr_sort);
TextView logsGrade = (TextView) convertView.findViewById(R.id.exp_gr_grade);
TextView logsCount = (TextView) convertView.findViewById(R.id.exp_gr_logs_count);
logsSort.setText(headerTitle);
logsGrade.setText(headerTitle);
logsCount.setText(headerTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的logsRecapitulation类:
public class LogsRecapitulation extends AppCompatActivity {
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.expandable_layout);
//recieve RecepitID and query to group_by logs
final long forwardedId = (long) getIntent().getExtras().get(String.valueOf("recepitID"));
List<Logs> logsList = new Select().from(Logs.class).where("Receipt = " + forwardedId).groupBy("SortID, Grade").execute();
//get the listview
expListView = (ExpandableListView) findViewById(R.id.lvExp);
prepareListData();
listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
expListView.setAdapter(listAdapter);
}
private void prepareListData() {
}
}
Run Code Online (Sandbox Code Playgroud)
我现在的问题是使用数据库中的数据填充ExpendableListView.这是我的表类:
//receipt table
@Table(name = "Receipt")
public class Receipt extends Model {
@Column(name="Place")
String place;
@Column(name="ShippingNumber")
String shippingNumber;
@Column(name="Warehouse")
String warehouse;
@Column(name="Carrier")
String carrier;
@Column(name="LicencePlate")
String licencePlate;
@Column(name = "Driver")
String driver;
@Column(name = "Customer")
String customer;
@Column(name= "DestWarehouse")
String destWarehouse;
@Column(name = "Employee")
String employee;
@Column(name = "PriceType")
String priceType;
@Column(name = "PriceCorrection")
Double priceCorrection;
@Column(name = "PriceCorrection2")
Double priceCorrection2;
@Column(name = "Supplier")
String supplier;
@Column(name = "CreatedAt")
Date createdAt;
}
//logs table
@Table(name = "Logs")
public class Logs extends Model {
@Column(name="PlateNumber")
String plate_number;
@Column(name="SortID")
String sort_id;
@Column(name="Grade")
String grade;
@Column(name = "Diametar")
double diameter;
@Column(name="Length")
double length;
@Column(name="CreatedAt")
Date createdAt;
@Column(name="Receipt")
Receipt receipt;
@Column(name = "Price")
Price price;
}
//price table
@Table(name = "Price")
public class Price extends Model {
@Column(name = "Sort")
String sort;
@Column(name = "Grade")
String grade;
@Column(name = "Diameter")
double diameter;
@Column(name = "LengthDG")
double lengthDG;
@Column(name = "LengthGG")
double lengthGG;
@Column(name = "StumpPriceKn")
double stumpPrice_kn;
@Column(name = "RoadPriceKn")
double roadPrice_kn;
}
Run Code Online (Sandbox Code Playgroud)
注意:我正在使用ActiveAndroid.
如果有人知道如何从数据库填充可扩展listView请帮忙.
问题:如何从数据库成功填充ExpandableListView?
| 归档时间: |
|
| 查看次数: |
365 次 |
| 最近记录: |