我正在开发一个包含多个表的项目,一个表包含多行。如何从数据库中获取数据并使用SimpleAdapter
?
我尝试过使用游标,但我只获取存储在数据库中的最后一行值。
尝试使用ArrayList<Hashmap<String, String>>
时,我得到NullPointerException
,即使使用try catch块也无法解决。
以下是获取它的代码
public class ProducTransection extends Activity {
AutoCompleteTextView actv;
TextView datefrom, dateto;
Button getbtn;
ArrayAdapter<String> adapname;
Cursor cl;
HashMap<String, String> detail = new HashMap<String, String>();
ArrayList<HashMap<String, String>> detailList;
ListView lv1;
DatabaseHandler db = new DatabaseHandler(ProducTransection.this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.producttransection);
actv = (AutoCompleteTextView)findViewById(R.id.ptname);
datefrom = (TextView)findViewById(R.id.ptfromdate);
dateto = (TextView)findViewById(R.id.pttodate);
getbtn = (Button)findViewById(R.id.ptgetbtn);
lv1 = (ListView)findViewById(R.id.ptlist);
Calendar dat = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String formdate = sdf.format(dat.getTime());
datefrom.setText(formdate);
dateto.setText(formdate);
String[] name = db.getName();
adapname = new ArrayAdapter<String>(ProducTransection.this, android.R.layout.simple_list_item_1, name);
actv.setAdapter(adapname);
getbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
detailList = new ArrayList<HashMap<String, String>>();
cl = db.getproducttransection(actv.getText().toString(), datefrom.getText().toString(), dateto.getText().toString());
cl.moveToFirst();
// do
for(int i = 0; i <= cl.getColumnCount(); i++) {
String date = cl.getString(cl.getColumnIndex("date"));
String product = cl.getString(cl.getColumnIndex("product_name"));
String price = cl.getString(cl.getColumnIndex("price"));
String Qty = cl.getString(cl.getColumnIndex("qty"));
detail.put("dat", date);
detail.put("pro", product);
detail.put("pri", price);
detail.put("qty", Qty);
detailList.add(detail);
SimpleAdapter simadap = new SimpleAdapter(ProducTransection.this, detailList, R.layout.producttransectionui,
new String[] { "dat", "pro", "pri", "qty"},
new int[]{ R.id.ptuidate, R.id.ptuiproduct, R.id.ptuiprice, R.id.ptuiqty });
lv1.setAdapter(simadap);
}
// while(cl.moveToNext());
} catch (IndexOutOfBoundsException e) {
}
}
});
}
}
现在如果我错了,请帮我getdata并在SimpleAdapter中显示它。
答案 0 :(得分:0)
你想从sqllite或mysql收到你的数据
如果它的mysql然后使用PHP来检索数据并以json格式回显(google搜索)
然后使用 JSON 来解析Android应用中的值
然后只用listview显示
答案 1 :(得分:0)
我建议您使用ORM库,因为您正在处理许多表。这将简化您的查询和工作。
要了解ORM是什么,请转到
http://en.wikipedia.org/wiki/Object-relational_mapping
并下载ORM库for android
ORM库教程,