将动态图像添加到Android中的GridView

时间:2010-08-21 08:56:51

标签: android gridview dynamic

private class Task_xmlparse extends AsyncTask<String, Void, Void> {
    private final ProgressDialog dialog = new ProgressDialog(BlackSheepimage.this);
    protected void onPreExecute() {
        this.dialog.setMessage("Loading...");
        this.dialog.setCancelable(false);
        this.dialog.show();
    }

    @Override
    protected Void doInBackground(String... params)
    {
        try {

            DomFeedParser dom = new DomFeedParser(url);
            Log.v("thread"," "+url);
            List<Message_thbnail> l_obj_tnail = new ArrayList<Message_thbnail>();
            List<Message_zoom> l_obj_zoom = new ArrayList<Message_zoom>();
            l_obj_tnail = dom.parse_tnail();
            l_obj_zoom = dom.parse_zoom();
            VAL1 = new String[l_obj_tnail.size()];
            VAL2= new String[l_obj_zoom.size()];
            //Log.v("bufersize",""+bufferarray.length);
            //Log.v("val2Length",""+VAL1.length);
            Iterator<Message_thbnail> it_tnail = l_obj_tnail.iterator();
            while (it_tnail.hasNext())
            {
                k++;
                Log.v("Zoo",""+zo);
                VAL1[k] = it_tnail.next().toString();
                bufferarray[zo]=VAL1[k];
                Log.v("Buffer",bufferarray[zo]);
                zo++;


            }
            Log.v("threadbuffsize",""+zo);
            Iterator<Message_zoom> it_zoom = l_obj_zoom.iterator();
            Log.v("zoosize", ""+l_obj_zoom.size());
            while (it_zoom.hasNext()) {
                k1++;

                Log.v("Zoo1",""+zo1);
                VAL2[k1] = it_zoom.next().toString();
                zoombufferarray[zo1]=VAL2[k1];
                zo1++;
                Log.v("tag",VAL2[k1].toString());

            }

            thumbnail_disp=bufferarray;
            grid= new GridAdapter(BlackSheepimage.this,bufferarray);
        } catch (Exception e) {
            //Log.v("Image", "dom" + e);
        }

        return null;
    }


protected void onPostExecute(Void result) {

    lay2_gv.setAdapter(grid);
    if (this.dialog.isShowing()) {
        this.dialog.dismiss();
    }
}

}
public void onCreate(Bundle savedInstanceState)
{
    url="http://www.theblacksheeponline.com/partypics.php?page="+pageno;
    super.onCreate(savedInstanceState);
    lay2_gv = (GridView) findViewById(R.id.jr_lookbook_grid);
    new Task_xmlparse().execute(url);
    tv = (TextView) findViewById(R.id.next_pg);
  tv.setOnClickListener(this) ;
    lay2_gv.setOnItemClickListener(this);
}
public void onClick(View arg0) {


        pageno++;
        Log.v("pge",""+pageno);
        lay2_gv.setVisibility(GridView.GONE);
        url="http://www.theblacksheeponline.com/partypics.php?page="+pageno;
        //Log.v("URL",url);
         new Task_xmlparse().execute(url);

}

1 个答案:

答案 0 :(得分:0)

我认为在这里使用Intent对你来说是正确的。当我收集它时,您解析xml以显示图像,并且您希望能够在用户单击按钮时添加更多图像。所以这就是你需要做的事情:

在按钮的onClick方法中,您应该启动AsyncTask或后台Thread,在其中您在网址上发出http请求。

这将为您提供下一个图像的xml,您解析它并在后台线程中准备图像。

然后返回主线程(例如onClick方法),抓取这些图像,将它们添加到GridView的适配器并调用notifyDataSetChanged()更新GirdView 1}}。这应该可以解决问题。