【发布时间】:2015-09-12 17:05:40
【问题描述】:
/*
this is the class which is called when a button is pressed in main activity. onResume is called along with onCreate first, and the list is getting populated with the last row input from the database multiple times.
目的是用数据库表中的数据填充列表视图。 什么时候调用 onResume? */
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
public class Expenses extends Activity {
ListView l;Databasehelper mydb;List<ListViewItem> items;
MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_expenses);
l= (ListView)findViewById(R.id.lv1);
mydb=new Databasehelper(this);
items= new ArrayList<Expenses.ListViewItem>();
//adapter= new MyAdapter(this, items);
//l.setAdapter(adapter);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
items.clear();
ListViewItem a= new ListViewItem();
Cursor cur=mydb.getData();
if(cur.getCount()==0)
Toast.makeText(this, "No expenses to display", Toast.LENGTH_LONG).show();
cur.moveToFirst();
do
{
a.category=cur.getString(0);
a.status=cur.getString(1);
a.amount=cur.getString(2);
items.add(a);
}while(cur.moveToNext());
adapter= new MyAdapter(this, items);
l.setAdapter(adapter);
for(int i=0; i<items.size(); i++)
{
System.out.print(items.get(i).category+" "+items.get(i).status+" "+items.get(i).amount);
System.out.println();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.expenses, menu);
return true;
}
public class ListViewItem{
public String category, amount, status;
}
public void onAdd(View v){
Intent in= new Intent(this, Input.class);
startActivityForResult(in, 10);
}
}
//请帮助填充表。我怀疑恢复方法有问题。当我//使用打印命令打印时,列表包含相同//行的多个副本。但是数据库中的表包含正确的元组.
【问题讨论】:
-
Android Listview Adds The Same Item 和许多许多其他的可能重复项....看来您懒得做一些研究