我有一个SQLite数据库与多个列,其中一个列是日期。我想将数据库中的数据填充到可扩展列表视图中,并将日期作为标题。因此,对于共享相同日期值的所有行,我想将它们显示为特定日期的孩子。与SQLite数据库的可扩展列表视图
我用arraylist来存储数据库中的数据。我得到了组标题,但当我尝试展开时,我得到空指针异常。该错误来自getChildView方法。
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
public Object getChild(int groupPosition, int childPosition) {
return infoList.get(groupPosition).get(childPosition);
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
RelativeLayout infoLayout = (RelativeLayout) findViewById(R.id.infoLayout);
String exercise = ((ArrayList<Object>) getChild(groupPosition, childPosition)).get(0).toString();
String weight = ((ArrayList<Object>) getChild(groupPosition, childPosition)).get(1).toString();
String reps = ((ArrayList<Object>) getChild(groupPosition, childPosition)).get(2).toString();
((TextView) infoLayout.findViewById(R.id.exercise)).setText(exercise);
((TextView) infoLayout.findViewById(R.id.weight)).setText(weight);
((TextView) infoLayout.findViewById(R.id.reps)).setText(reps);
return infoLayout;
}
public int getChildrenCount(int groupPosition) {
return infoList.get(groupPosition).size();
}
public Object getGroup(int groupPosition) {
return dateList.get(groupPosition);
}
public int getGroupCount() {
return dateList.size();
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView dateView = new TextView(getApplicationContext());
dateView.setText(getGroup(groupPosition).toString());
return dateView;
}
public boolean hasStableIds() {
return false;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
这就是我如何填充arraylist。包含子元素的数组列表嵌套两次:最里面的元素包含3个要显示在同一行上的对象,“中间”元素将最内层的数组分组在一起,以便它们出现在可扩展列表视图的正确分组下。
private DatabaseMethods dbm;
private ArrayList<String> dateList = new ArrayList<String>();
private ArrayList<ArrayList<ArrayList<Object>>> infoList = new ArrayList<ArrayList<ArrayList<Object>>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stats);
dbm = new DatabaseMethods(this);
dbm.read();
Cursor dates = dbm.fetchGroup();
int DATES_INDEX = dates.getColumnIndexOrThrow("date");
while (dates.moveToNext()) {
String date = dates.getString(DATES_INDEX);
if (!dateList.contains(date)) {
dateList.add(date);
}
}
for (String date : dateList) {
Cursor info = dbm.fetchChildren(date);
int EXERCISE_INDEX = info.getColumnIndexOrThrow("exercise");
int WEIGHT_INDEX = info.getColumnIndexOrThrow("weight");
int REPS_INDEX = info.getColumnIndexOrThrow("reps");
ArrayList<ArrayList<Object>> secondInnerInfoList = new ArrayList<ArrayList<Object>>();
while (info.moveToNext()) {
String exercise = info.getString(EXERCISE_INDEX);
int weight = info.getInt(WEIGHT_INDEX);
int reps = info.getInt(REPS_INDEX);
ArrayList<Object> thirdInnerInfoList = new ArrayList<Object>();
thirdInnerInfoList.add(exercise);
thirdInnerInfoList.add(weight);
thirdInnerInfoList.add(reps);
secondInnerInfoList.add(thirdInnerInfoList);
infoList.add(secondInnerInfoList);
}
}
您是否尝试过的东西?向我们显示您尝试过的代码,如果您有任何问题,您将收到帮助。 –
阐述你的问题。如果您的代码有错误,请将其发布到此处。否则,您可以搜索[谷歌](http://goo.gl/uZ1D1)的sqlite教程或SO [问题](http://stackoverflow.com/q/6760948/1050058)。 –
http://stackoverflow.com/questions/17132559/java-lang-nullpointerexception-displaying-records-from-database-in-an-expandab 需要帮助。检查出链接^ – user2468835