【问题标题】:Issue with android layout and progressbarandroid布局和进度条问题
【发布时间】:2011-05-04 12:41:13
【问题描述】:

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

但是我似乎无法弄清楚如何执行以下操作: 我有 2 个按钮,其中一个会读取数据库标题,然后会转到您选择的详细页面(仍在处理中)

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

公共类 SynchDB_Activity 扩展 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);
    }
}

所以这段代码可以工作并将所有数据放入本地数据库中。但是我就是无法让加载栏正常工作,这让我发疯了。

如果有人可以帮助我,我将不胜感激!!! 我整天都在谷歌上搜索,但似乎没有任何效果....

非常感谢

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

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

【问题讨论】:

    标签: android rss progress-bar


    【解决方案1】:

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

    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的布局文件吗?
    • 嘿,我尝试了一些你的代码,最终我弄明白了,非常感谢你的快速回复!
    【解决方案2】:

    您可能想使用AsyncTask

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      相关资源
      最近更新 更多