0
我試圖預覽一個練習日誌,它顯示用戶在一天中執行的所有練習以及持續時間和燃燒的卡路里,最後會有當天燃燒的總卡路里。
當我第一次嘗試這樣做時,我構建了一個10行的佈局,每行都有3個文本視圖,分別表示練習名稱,持續時間和燃燒的卡路里。但是這是不切實際的,因爲用戶輸入會每天都有所不同。所以我想出了這個解決方案,我不確定它是否可以在android中完成。
請看看,並告訴我,什麼是錯的原諒我的長征介紹ListView佈局問題
佈局:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableLayout android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:stretchColumns="0">
<TableRow android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="Activity"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
<TextView android:layout_width="wrap_content"
android:text="Duration"
android:layout_height="wrap_content">
</TextView>
<TextView android:layout_width="wrap_content"
android:text="Burned"
android:layout_height="wrap_content">
</TextView>
</TableRow>
<TableRow android:layout_height="wrap_content"
android:layout_width="fill_parent">
<ListView android:id="@+id/lstAct"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
<ListView android:id="@+id/lstDur"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
<ListView android:id="@+id/lstbrn"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</TableRow>
<TableRow android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Total Burned Calories">
</TextView>
<TextView android:id="@+id/Totbrn"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Kcal">
</TextView>
</TableRow>
<Button android:id="@+id/addExcBtn"
android:layout_width="wrap_content"
android:text="Add another exercise"
android:layout_height="wrap_content">
</Button>
</TableLayout>
</LinearLayout>
這是類代碼:
public class ExerciseDiary extends Activity implements OnClickListener {
private DataBaseHelper helper;
private ListView l1;
private ListView l2;
private ListView l3;
static String[] activity;
static Integer[] duration;
static Integer[] burned;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
helper = new DataBaseHelper(this);
l1 = (ListView) findViewById(R.id.lstAct);
l2 = (ListView) findViewById(R.id.lstDur);
l3 = (ListView) findViewById(R.id.lstbrn);
fillArray();
l1.setAdapter(new ArrayAdapter<String>(this, R.layout.items,activity));
l2.setAdapter(new ArrayAdapter<Integer>(this, R.layout.items,duration));
l3.setAdapter(new ArrayAdapter<Integer>(this, R.layout.items,burned));
View AddButton = findViewById(R.id.addExcBtn);
AddButton.setOnClickListener(this);
}
public void onClick(View v){
switch (v.getId()) {
case R.id.addExcBtn:
startActivity(new Intent(this, Exercise.class));
break;
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
startActivity(new Intent(this, Activity_DietTracker.class));
return true;
}
return false;
}
public void fillArray(){
GregorianCalendar toDay = new GregorianCalendar();
String today = AllCmnMtd.getDate(toDay);
activity = new String[100];
duration = new Integer[100];
burned = new Integer[100];
int i = 0;
helper.openDataBase();
SQLiteDatabase db = helper.getReadableDatabase();
Cursor c = db.rawQuery("Select * from ExerciseLog where EDate = '" + today + "'", null);
if(c!=null){
if(c.moveToFirst()){
do{
activity[i] = c.getString(c.getColumnIndex("Exercise"));
duration[i] = c.getInt(c.getColumnIndex("Duration"));
burned[i] = c.getInt(c.getColumnIndex("Burned"));
i++;
}while(c.moveToNext());
}
}
helper.close();
}
}
這些是錯誤:
java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:351)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
at android.widget.AbsListView.obtainView(AbsListView.java:1251)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1117)
at android.widget.ListView.onMeasure(ListView.java:1030)
at android.view.View.measure(View.java:7115)
at android.widget.TableRow.measureChildBeforeLayout(TableRow.java:221)
at android.widget.LinearLayout.measureHorizontal (LinearLayout.java:619)
at android.widget.TableRow.onMeasure(TableRow.java:112)
at android.view.View.measure(View.java:7115)
和約25個其他人。
如果任何人有任何有關該信息,或者如果有另一種方式來做到這一點,請讓我知道。
謝謝
我真的不知道你在那裏嘗試什麼,但我可以告訴你,你做錯了。 – 2011-04-05 18:21:28
需要圍繞視圖充氣的NullPointer一些代碼。 – 2011-04-05 18:25:16
首先解釋你想做什麼。然後我們都會知道你想要完成什麼。還發布拋出NullPOinter的ArrayAdapter的代碼 – apesa 2011-04-05 18:40:47