我在做一个应用程序中,我得从XML响应和我得到的图片网址。现在我希望把来自URL的图片到GridView的,但我硝基甲苯知道如何提取网址的图像,并把在gridview.Any帮助会美联社preciated.My code是如下:
公共类GalleryNewActivity延伸活动{
私人ProgressDialog对话框;
GridView的GA;
元素e;
节点ELEM;
公开名单<可绘制>图片;
ImageView的ImageView的;
静态最后弦乐preFS_NAME =我的preFS;
静态最后弦乐USER_KEY =用户;
静态最终字符串名称=名称;
/ **第一次创建活动时调用。 * /
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
如果(isNetworkconn()){
新GetSPCAsyncTask()执行();
}其他{
showDialogOnNoInternet();
}
GA =(GridView控件)findViewById(R.id.Gallery01);
ga.setAdapter(新ImageAdapter(本));
ImageView的=(ImageView的)findViewById(R.id.ImageView01);
}
公共类ImageAdapter扩展了BaseAdapter {
私人语境mContext;
公共ImageAdapter(上下文C){
mContext = C;
}
公众诠释getCount将(){
返回pictures.size();
}
公共对象的getItem(INT位置){
返回null;
}
众长getItemId(INT位置){
返回0;
}
//创建由适配器引用的每个项目的新的ImageView
公共查看getView(INT位置,查看convertView,ViewGroup中父){
视图V;
如果(convertView == NULL){//如果它不回收,初始化一些
//属性
LayoutInflater李= getLayoutInflater();
V = li.inflate(R.layout.galleryitem,NULL);
ImageView的=(ImageView的)v.findViewById(R.id.thumbImage);
imageView.setLayoutParams(新GridView.LayoutParams(200,250));
// imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(2,5,2,5);
} 其他 {
ImageView的=(ImageView的)convertView;
}
imageView.setImageDrawable(pictures.get(位置));
imageView.setTag(图片[位置]);
返回ImageView的;
}
私有类GetPicsToNextPage扩展的AsyncTask<字符串,字符串,字符串> {
@覆盖
在preExecute保护无效(){
// TODO自动生成方法存根
super.on preExecute();
对话框= ProgressDialog.show(GalleryNewActivity.this,请稍等,载入中...);
}
@覆盖
保护字符串doInBackground(字符串... PARAMS){
// TODO自动生成方法存根
字符串str = NULL;
尝试 {
视频下载(2000);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
返回海峡;
}
@覆盖
保护无效onPostExecute(字符串结果){
// TODO自动生成方法存根
super.onPostExecute(结果);
dialog.dismiss();
意向意图=新的意图(getApplicationContext(),Flip3d.class);
startActivity(意向);
}
}
私人布尔isNetworkconn(){
ConnectivityManager conMgr =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
如果(conMgr.getActiveNetworkInfo()=空&安培;!&安培; conMgr.getActiveNetworkInfo()isAvailable()&安培;&安培; conMgr.getActiveNetworkInfo()isConnected()){
返回true;
}其他{
返回false;
}
}
私人无效showDialogOnNoInternet(){
AlertDialog.Builder alt_bld =新AlertDialog.Builder(GalleryNewActivity.this);
alt_bld.setTitle(错误);
alt_bld.setMessage(您的手机没有连接到互联网。);
alt_bld.setCancelable(假);
alt_bld.setNeutralButton(OK,新DialogInterface.OnClickListener(){
@覆盖
公共无效的onClick(DialogInterface对话,诠释它){
// TODO自动生成方法存根
dialog.dismiss();
}
});
alt_bld.show();
}
//加载动态启动
私有类GetSPCAsyncTask扩展的AsyncTask<字符串,字符串,字符串> {
@覆盖
在preExecute保护无效(){
// TODO自动生成方法存根
super.on preExecute();
对话框= ProgressDialog.show(GalleryNewActivity.this,请稍等,载入中...);
}
@覆盖
保护字符串doInBackground(字符串... PARAMS){
// TODO自动生成方法存根
ArrayList的< HashMap的<字符串,字符串>> mylist中=新的ArrayList< HashMap的<字符串,字符串>>();
XML字符串= XMLfunctions.getXML();
文档DOC = XMLfunctions.XMLfromString(XML);
节点列表节点= doc.getElementsByTagName(图像);
的for(int i = 0; I< nodes.getLength();我++){
HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();
E =(元)nodes.item(我);
//map.put("Image,XMLfunctions.getValue(即图像));
map.put(的ImagePath,纳摩:+ XMLfunctions.getValue(e行的ImagePath));
map.put(ImageHeadline,标题:+ XMLfunctions.getValue(即ImageHeadline));
的System.out.println(map.put(ImageHeadline,标题:+ XMLfunctions.getValue(即ImageHeadline)));
map.put(ImageDesc,说明:+ XMLfunctions.getValue(即ImageDesc));
的System.out.println(map.put(ImageDesc,说明:+ XMLfunctions.getValue(即ImageDesc)));
mylist.add(图)
绘制对象D = LoadImageFromWebOperations();
pictures.add(四);
}
返回XML;}
@覆盖
保护无效onPostExecute(字符串结果){
// TODO自动生成方法存根
super.onPostExecute(结果);
dialog.dismiss();
}
私人绘制对象LoadImageFromWebOperations()
{
字符串路径= XMLfunctions.getValue(e行的ImagePath);
尝试{
InputStream的是=(InputStream的)新的URL(路径).getContent();
绘制对象D = Drawable.createFromStream(是,SRC名);
Log.w(CREADO,CREADO);
返回D组;
}赶上(例外五){
的System.out.println(EXC =+ E);
返回null;
}
}
}
}
解决方案
我会建议你检查从以下网址加载图片的解决方案:
Android的 - 由诺斯特拉 通用图像装载机 Android - 如何做我做的一个图像延迟加载ListView中结果,你可以得到,如果你使用通用映像加载器:
i am making an app in which i have to get response from xml and i get image urls .Now i want to put images from urls into gridview but i dnt know how to extract images from urls and put in gridview.Any help will be appreciated.My code is as follows:
public class GalleryNewActivity extends Activity {
private ProgressDialog dialog;
GridView ga;
Element e;
Node elem;
public List<Drawable> pictures;
ImageView imageView;
static final String PREFS_NAME = "MyPrefs";
static final String USER_KEY = "user";
static final String Name = "name";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(isNetworkconn()){
new GetSPCAsyncTask().execute("");
}else{
showDialogOnNoInternet();
}
ga = (GridView)findViewById(R.id.Gallery01);
ga.setAdapter(new ImageAdapter(this));
imageView = (ImageView)findViewById(R.id.ImageView01);
}
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return pictures.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.galleryitem, null);
imageView = (ImageView)v.findViewById(R.id.thumbImage);
imageView.setLayoutParams(new GridView.LayoutParams(200, 250));
// imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(2, 5, 2, 5);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageDrawable(pictures.get(position));
imageView.setTag(pics[position]);
return imageView;
}
private class GetPicsToNextPage extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog = ProgressDialog.show(GalleryNewActivity.this, "Please wait", "Loading...");
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String str = null;
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dialog.dismiss();
Intent intent = new Intent(getApplicationContext(), Flip3d.class);
startActivity(intent);
}
}
private boolean isNetworkconn(){
ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected()) {
return true;
}else{
return false;
}
}
private void showDialogOnNoInternet(){
AlertDialog.Builder alt_bld = new AlertDialog.Builder(GalleryNewActivity.this);
alt_bld.setTitle("Error.");
alt_bld.setMessage("Your phone is not connected to internet.");
alt_bld.setCancelable(false);
alt_bld.setNeutralButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
alt_bld.show();
}
//loader for dynamic starts
private class GetSPCAsyncTask extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog = ProgressDialog.show(GalleryNewActivity.this, "Please wait", "Loading...");
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
String xml = XMLfunctions.getXML();
Document doc = XMLfunctions.XMLfromString(xml);
NodeList nodes = doc.getElementsByTagName("Image");
for (int i = 0; i < nodes.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
e = (Element)nodes.item(i);
//map.put("Image", XMLfunctions.getValue(e, "Image"));
map.put("ImagePath", "Naam:" + XMLfunctions.getValue(e, "ImagePath"));
map.put("ImageHeadline", "Headline: " + XMLfunctions.getValue(e, "ImageHeadline"));
System.out.println(map.put("ImageHeadline", "Headline: " + XMLfunctions.getValue(e, "ImageHeadline")));
map.put("ImageDesc", "Desc: " + XMLfunctions.getValue(e, "ImageDesc"));
System.out.println(map.put("ImageDesc", "Desc: " + XMLfunctions.getValue(e, "ImageDesc")));
mylist.add(map);
Drawable d=LoadImageFromWebOperations();
pictures.add(d);
}
return xml;}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dialog.dismiss();
}
private Drawable LoadImageFromWebOperations()
{
String path=XMLfunctions.getValue(e, "ImagePath");
try{
InputStream is = (InputStream) new URL(path).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
Log.w("CREADO","CREADO");
return d;
}catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
}
}
解决方案
I would suggest you to check below solutions for loading images from URL:
Android - Universal Image loader by Nostra Android - How do I do a lazy load of images in ListViewResult you can get if you use Universal image loader:
上一篇:我怎样才能影线的Robolectric的PackageManager影线、Robolectric、PackageManager
下一篇:为什么这个错误发生? java.lang.RuntimeException的:ImageLoader的,必须与配置使用前初始化初始化、错误、发生、lang