【问题标题】:How show process dialog for get data from Sqlite and show in listview如何显示从 Sqlite 获取数据并在列表视图中显示的进程对话框
【发布时间】:2015-08-29 21:49:13
【问题描述】:

我想当点击按钮时,只要列表视图显示一个对话框处理器,跳转后查看完整列表显示其他处理器行。对于低数据,智能手机工作正常,但如果数据太大而无法在列表视图中显示,并且列表视图智能手机在填充时会挂起。请指导我。

这段代码

    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {


         openandquery();
        displayResultList();



        }
    });


public void openandquery() {

     baseHelper= new DataBaseHelper(contex);
     boolean exists=  baseHelper.checkDataBase();


      if (exists){

     message.messages(contex, "True : There database ");

        try {
            boolean open= baseHelper.openDataBase();


                  if (open)
                  {
                  message.messages(contex, "True : database open");

                      Cursor cursor= baseHelper.getTestData(edittext.getText().toString());
                        countf=cursor.getCount();
                      if (countf<=0)message.messages(contex, "Not Found");
                  }

                      else 
                      message.messages(contex, "False : NO database open");
        } catch (SQLException e) {

            message.messages(contex, "Error Open  : " + e.getMessage());

        }   


      }

         else 
                  message.messages(contex, "False : There is no database");

    }





private void displayResultList() {

        try {

        array=baseHelper.results;
        tView.setText("Size : " +array.size());

            try {


                 arrayAdapter=new display();
                arrayAdapter.notifyDataSetChanged();
                listV.setAdapter(arrayAdapter);

            } catch (Exception e) {
             message.messages(contex, e.getMessage());
            }

            listV.setTextFilterEnabled(true);

        } catch (Exception e) {
             message.messages(contex, e.getMessage());
        }



        }

这段代码在 openandquery 中调用

 public Cursor getTestData(String phone)
    { 

        String  sql ="SELECT * FROM cusomer WHERE address!='' and key='"+p;
         message.message(mContext, ":"+p+":");
        try
        {
             if (p.isEmpty())
             {sql="SELECT * FROM cusomer WHERE address!=''";


             }


            Cursor mCur = mDataBase.rawQuery(sql, null);

            message.message(mContext, mCur.getCount()+"");
            if (mCur!=null)
            {

                if (mCur.moveToFirst()){
                              try {

                    do{
                          String d=mCur.getString(mCur.getColumnIndex("address"));
                          String p= mCur.getString(mCur.getColumnIndex("phone")); 
                          int    k=mCur.getInt(mCur.getColumnIndex("key"));
                          int    i=mCur.getInt(mCur.getColumnIndex("_id"));
                          long t=mCur.getLong(mCur.getColumnIndex("registertime"));

                          results.add(new msgstore(d,p,k,i,t));


                      }while(mCur.moveToNext());



                } catch (Exception e) {
                    message.message(mContext, e.getMessage());

                }
                }

           mCur.close();

            }



                return mCur;





        }
        catch (SQLException mSQLException) 
        {
            message.message(mContext, "getTestData >>"+ mSQLException.toString());

            throw mSQLException;
        }






    }

【问题讨论】:

  • 100,000 条记录无法在智能手机上滚动浏览。没有实际需要将所有这些记录一次放入列表视图的情况。

标签: android sqlite listview progressdialog


【解决方案1】:

在 onClick 函数中添加如下内容:

button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

    ProgressDialog dialog = new ProgressDialog(YourListActivity.this);        
    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    dialog.setTitle("Updating values");
    dialog.setMessage("Searching the database");
    dialog.show(); // Show the dialog

    openandquery();

    dialog.setMessage("Loading results"); // if you want to change the message

    displayResultList();

    dialog.dismiss(); // Close the dialog.

    }
});

【讨论】:

  • 它不起作用,我用它,然后列表会显示完整视图,谢谢你
  • @Negar,屏幕上什么都没有?或者你想在不同的时间展示它?
  • 无画面不显示
  • @Negar,可能从单击按钮到列表已满之间的时间太短,所以您将没有时间查看对话框!列表需要很长时间才能填写吗?
  • 不,当数据量很大(超过 10 万条记录)导致智能手机有点挂起时,这就是为什么我想要让用户没有注意到 Hong 智能手机的对话处理器.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
相关资源
最近更新 更多