3

我在循环中创建一些文本和图像视图,并从另一个类接收一些数据,我如何创建这些文本和图像视图并在 AsyncTask 中使用 addview 方法?

我在 doInBackground 方法中使用 addview ,它不起作用.. 另外,我不知道这是否是动态添加视图的最佳方法,欢迎提出建议!

class syncTask extends AsyncTask<Void, Void, Void> {
     private ProgressDialog pd;
     int increment=0;
     RelativeLayout layout;
     public syncTask(RelativeLayout layout) {
        // TODO Auto-generated constructor stub
         this.layout = layout;
    }

    @Override
     protected void onPreExecute() {
        pd = new ProgressDialog(main.this);
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.setProgress(0);
        pd.setMax(0);
        pd.setMessage("Loading friends");
        pd.show();
     }

    @Override
     protected Void doInBackground(Void... v) {
        try
        {
            Set<User> users = LFMRestConnection.getFriendsNowListening(user, 1440);
            for (User u : users) {
                pd.setMax(max);
                //album picture
                    album_pic = loadBitmap(u.getImageURL().getImageURL(ImageURL.Size.LARGE));
                    resized_a_p = android.graphics.Bitmap.createScaledBitmap(album_pic, (width/3), (width/3), true);
                    iv_album = new ImageView(main.this);
                    iv_album.setImageBitmap(resized_a_p);
                    iv_album.layout(0, 0, 0, 0);
                    iv_album.setPadding(width-resized_a_p.getWidth()-5, t_img, 5, 0);
                //profile picture
                    user_pic = loadBitmap(u.getImageURL().getImageURL(ImageURL.Size.LARGE));
                    resized_u_p = android.graphics.Bitmap.createScaledBitmap(user_pic, ((width/4)-10)/2, ((width/4)-10)/2, true);
                    iv_user = new ImageView(main.this);
                    iv_user.setImageBitmap(resized_u_p);
                    iv_user.setLayoutParams(params_2);
                    iv_user.layout(0, 0, 0, 0);
                    iv_user.setPadding(0, (t_img+resized_a_p.getHeight())-resized_u_p.getHeight(), resized_a_p.getWidth()+10, 0);
                //shapes
                    //shapes = new shapes(this, (t_img+resized_a_p.getHeight()), resized_a_p.getWidth()+10);
                //username text position
                    tv_user = new TextView(main.this);
                    tv_user.layout(0, 0, 0, 0);
                    tv_user.setTextSize(12);
                    tv_user.setPadding(0, (t_img+resized_a_p.getHeight())-resized_u_p.getHeight()+14, (resized_a_p.getWidth()+resized_u_p.getWidth())+15, 0);
                    tv_user.setGravity(Gravity.RIGHT);
                    tv_user.setLayoutParams(params_1);
                //artist text position
                    tv_artist = new TextView(main.this);
                    tv_artist.layout(0, 0, 0, 0);
                    tv_artist.setTextSize(20);
                    tv_artist.setPadding(5, t_img-10, 0, 0);
                    tv_artist.setGravity(Gravity.LEFT);
                //track text position
                    tv_info = new TextView(main.this);
                    tv_info.setTextSize(12);
                    tv_info.layout(0, 0, 0, 0);
                    tv_info.setPadding(5, t_img+12, 0, 0);
                    tv_info.setGravity(Gravity.LEFT);

                //artist
                    tv_artist.setTypeface(null, Typeface.BOLD);
                    tv_artist.setText(u.getLastTrack().getArtistName());
                //username 
                    tv_user.setTypeface(null, Typeface.NORMAL);
                    tv_user.setText(u.getUserName()+"\n");
                    tv_user.append(u.getRealName());
                //track
                    tv_info.setTypeface(null, Typeface.NORMAL);
                    tv_info.append("\n" + u.getLastTrack().getTrackName());
                    tv_info.append("\n" + u.getLastTrack().getAlbumName());

                //move position
                    t_img+=(width/3)+20;

                increment++;
                pd.incrementProgressBy(increment);
                //views
                layout.addView(iv_album);
                layout.addView(iv_user);
                layout.addView(tv_info);
                layout.addView(tv_user);
                layout.addView(tv_artist);
            }
        }
        catch(Exception e)
        {
            //startActivity(i);
            System.out.println("Error");
            //finish();     
        }

        return null;

     }
     @Override
        protected void onPostExecute(Void result) {

         pd.dismiss();
     }
4

0 回答 0