将动态图像添加到Android中的GridView中
问题描述:
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);
}
答
我不认为在这里使用Intent
是正确的。在我收集它时,您将解析xml以显示图像,并且希望在用户单击按钮时能够添加更多图像。因此,这里是你需要做什么:
在按钮的onClick
方法,你应该开始一个AsyncTask
或背景Thread
,在其中您在您的网址http请求。
这将让你的下一个图像的XML,你分析它,并在你的后台线程准备图像。
然后回到你的主线程(在onClick
方法实例),你抢这些照片,将它们添加到您的GridView
的适配器,并呼吁notifyDataSetChanged()
更新您GirdView
。这应该可以做到。
,您好我跟着你的概念,但现在我打电话的AsyncTask按钮点击网址变更和呼叫的AsyncTask,并通过URL当我点击按钮,但没有反映在GridView的输出,GridView控件显示前16个图像是显示在GridView的我能做些什么如何解决这个问题 – sivaraj 2010-08-21 11:29:54
请尝试在你的句子中使用标点符号,这真的很难理解你。而且,只要您的评论,我无法帮助您,您需要详细说明。在你的文章中添加一些代码,你可能会在你的AsyncTask中出错。 – Sephy 2010-08-21 11:34:20
public void onClick(View arg0){ \t \t \t \t pageno ++; \t \t \t lay2_gv.setVisibility(GridView.GONE); \t \t \t URL = “http://www.theblacksheeponline.com/partypics.php?page=” +您做生意; \t \t new Task_xmlparse()。execute(url); \t \t lay2_gv.setVisibility(GridView.VISIBLE); \t \t \t \t \t} 此代码我用点击的方法,但我没有gridgiew获得更多的图像.. – sivaraj 2010-08-21 13:15:33