Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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布局和progressbar的问题_Android_Rss_Progress Bar - Fatal编程技术网

android布局和progressbar的问题

android布局和progressbar的问题,android,rss,progress-bar,Android,Rss,Progress Bar,我仍在开发我的应用程序,它必须在本地存储RSS数据。 到目前为止,我设法创建了一个本地数据库并解析了在线RSS提要。 我还设法将这些信息放入数据库中,因此现在该应用程序在脱机时也可以使用 然而,我似乎不知道如何做到以下几点: 我有两个按钮,其中一个读取数据库标题,并将转到您选择的详细页面(仍在进行此操作) 我目前的问题是,当应用程序从互联网下载数据时,我似乎无法添加一个加载条在屏幕上弹出。屏幕上只有10秒钟的空白,然后列表就会弹出。以下是我正在使用的代码: 公共类SynchDB_活动扩展了Lis

我仍在开发我的应用程序,它必须在本地存储RSS数据。 到目前为止,我设法创建了一个本地数据库并解析了在线RSS提要。 我还设法将这些信息放入数据库中,因此现在该应用程序在脱机时也可以使用

然而,我似乎不知道如何做到以下几点: 我有两个按钮,其中一个读取数据库标题,并将转到您选择的详细页面(仍在进行此操作)

我目前的问题是,当应用程序从互联网下载数据时,我似乎无法添加一个加载条在屏幕上弹出。屏幕上只有10秒钟的空白,然后列表就会弹出。以下是我正在使用的代码:

公共类SynchDB_活动扩展了ListActivity{

public List<Message> messages;
public List<String> titles;
//ProgressDialog dialog = ProgressDialog.show(SynchDB_Activity.this, "", "Downloading data...", true);

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.animal_list_view);

    loadFeed();
}

private void loadFeed(){

    try{
        BaseFeedParser parser = new BaseFeedParser();
        messages = parser.parse();

        List<String> titles = new ArrayList<String>(messages.size());

        DBAdapter db = new DBAdapter(this);

        for (Message msg : messages){
            titles.add(msg.getTitle());
            db.addRow(  
                msg.getTitle(), 
                msg.getDescription(), 
                "bla", 
                "http:/", 
                msg.getLink());
        }

        //dialog.dismiss();

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.row,titles);
        this.setListAdapter(adapter);

    } catch (Throwable t){
        Log.e("AndroidNews",t.getMessage(),t);
    }
}
公共列表消息;
公开名单名称;
//ProgressDialog=ProgressDialog.show(SynchDB_Activity.this,“,“下载数据…”,true);
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(右布局、动物列表视图);
loadFeed();
}
私有void loadFeed(){
试一试{
BaseFeedParser=新的BaseFeedParser();
messages=parser.parse();
列表标题=新的ArrayList(messages.size());
DBAdapter db=新的DBAdapter(此);
用于(消息消息:消息){
titles.add(msg.getTitle());
db.addRow(
msg.getTitle(),
msg.getDescription(),
“布拉”,
“http:/”,
msg.getLink());
}
//dialog.dismise();
ArrayAdapter=新的ArrayAdapter(此,R.layout.row,标题);
这个.setListAdapter(适配器);
}捕获(可丢弃的t){
Log.e(“AndroidNews”,t.getMessage(),t);
}
}
所以这段代码可以工作并将所有数据放在本地数据库中。但是我就是不能让加载条工作,这让我发疯

如果有人能帮我,我将不胜感激!!! 我已经在谷歌上搜索了一整天,但似乎什么都没用

非常感谢

编辑:正如你在代码中看到的,当列表完成时,我会显示列表。这不是必需的,但从我删除ArrayAdapter的那一刻起,应用程序将不再工作


请记住,这一切对我来说都是全新的,我认为出现问题的主要部分是使用不同的布局…

您可能想要使用。

使用异步任务和进度条,如下所示:

public void  getrss()
{
     try{
        class test extends AsyncTask{


             TextView tv_per;
             int mprogress;

            Dialog UpdateDialog = new Dialog(ClassContext);

            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub
                mprogress = 0;

                UpdateDialog.setTitle(getResources().getString(R.string.app_name));
                UpdateDialog.setContentView(R.layout.horizontalprogressdialog);
                TextView dialog_message =  (TextView)UpdateDialog.findViewById(R.id.titleTvLeft);
                tv_per = (TextView)UpdateDialog.findViewById(R.id.hpd_tv_percentage);
                dialog_message.setText(getResources().getString(R.string.dialog_retrieving_data));
                dialog_message.setGravity(Gravity.RIGHT);
                UpdateDialog.setCancelable(false);
                UpdateDialog.show();
                super.onPreExecute();
            }



            @Override
            protected void onProgressUpdate(Object... values) {
                // TODO Auto-generated method stub
                ProgressBar update = (ProgressBar)UpdateDialog.findViewById(R.id.horizontalProgressBar);
                update.setProgress((Integer) values[0]);
                int percent =  (Integer) values[0];
                if(percent>=100)
                {
                    percent=100;
                }
                tv_per = (TextView)UpdateDialog.findViewById(R.id.hpd_tv_percentage);
                 tv_per.setText(""+percent);
            }



            @Override
            protected Object doInBackground(Object... params) {
                // TODO Auto-generated method stub
                //your code
}

                super.onPostExecute(result);
                UpdateDialog.dismiss();
            }

         }
         new test().execute(null);

     }
     catch(Exception e)
     {
         e.printStackTrace();
     }

}

感谢您的回复,但是我不确定如何实现您给我的代码视图应该如何工作?另外,我在“ClassContext”上遇到了一个错误,以及关于正确使用标记“{”“}”的一些错误你有没有可能发布intire项目?这会让我更容易理解我做错了什么。谢谢你突出显示你出错的行?你想要updatedialog的布局文件吗?嘿,我尝试了你的一些代码,最终我找到了答案,非常感谢你的快速回复!