Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数据库获取行数据并在Android中检索_Android_Sqlite_Nullpointerexception_Simpleadapter_Null Pointer - Fatal编程技术网

从数据库获取行数据并在Android中检索

从数据库获取行数据并在Android中检索,android,sqlite,nullpointerexception,simpleadapter,null-pointer,Android,Sqlite,Nullpointerexception,Simpleadapter,Null Pointer,我正在处理一个有许多表的项目,一个表包含多行。如何从数据库中获取数据并使用simpledapter显示数据 我尝试过使用游标,但我只得到存储在数据库中的最后一行值 尝试使用ArrayList时,我得到一个NullPointerException,即使使用try-catch块也无法解决该问题 下面是获取它的代码 public class ProducTransection extends Activity { AutoCompleteTextView actv; TextView

我正在处理一个有许多表的项目,一个表包含多行。如何从数据库中获取数据并使用
simpledapter
显示数据

我尝试过使用游标,但我只得到存储在数据库中的最后一行值

尝试使用
ArrayList
时,我得到一个
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) {

                }
            }
        });
    }
}
公共类ProductTransition扩展了活动{
自动完成文本视图actv;
TextView datefrom,dateto;
按钮getbtn;
ArrayAdapter adapname;
光标cl;
HashMap detail=新的HashMap();
ArrayList详细列表;
ListView lv1;
DatabaseHandler db=新的DatabaseHandler(productTransition.this);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ProductTranssection);
actv=(AutoCompleteTextView)findviewbyd(R.id.ptname);
datefrom=(TextView)findViewById(R.id.ptfromdate);
dateto=(TextView)findViewById(R.id.pttodate);
getbtn=(按钮)findviewbyd(R.id.ptgetbtn);
lv1=(ListView)findViewById(R.id.ptlist);
Calendar dat=Calendar.getInstance();
SimpleDataFormat sdf=新的SimpleDataFormat(“日/月/年”);
字符串formdate=sdf.format(dat.getTime());
datefrom.setText(formdate);
dateto.setText(formdate);
String[]name=db.getName();
adapname=newarrayadapter(producttransition.this,android.R.layout.simple\u list\u item\u 1,name);
actv.setAdapter(adapname);
getbtn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
试一试{
detailList=新的ArrayList();
cl=db.getProductTransaction(actv.getText().toString(),datefrom.getText().toString(),dateto.getText().toString());
cl.moveToFirst();
//做

对于(int i=0;i您希望从哪里接收来自sqllite或mysql的数据
如果是mysql,则使用php检索数据并以json格式回送(谷歌搜索) 然后使用JSON解析android应用程序中的值

然后使用listview显示,我建议您使用ORM库,因为您正在处理许多表。这将简化您的查询和填充工作

要了解ORM是什么,请访问

下载android的ORM库

ORM库教程


发布您的代码和日志这篇文章非常清楚如何使用数据库:@mmlooloo我不允许上传没有足够数据的图像bcspoints@Distwo我已经看过了教程,但是没有帮助。我不想让你上传图片,我想发布你的代码。就像你键入的一样,你可以复制并粘贴你的code并使用
{}符号使其更美观,还可以保存日志并粘贴;-)sqllite我错误地编写了mysql