2012-05-11 4 views
0

Привет, Я разработал один синтаксический анализатор xml в приложении android. Если xml успешно проанализирован в списке (список продуктов). Теперь я реализовал это действие с намерением другого действия.Ошибка анализатора изображения xml

list.setOnItemClickListener(new OnItemClickListener() { 

@Override 
public void onItemClick(AdapterView parent, View view, 
int position, long id) { 
String Name = ((TextView) view.findViewById(R.id.title)).getText().toString(); 
String Category = ((TextView) view.findViewById(R.id.artist)).getText().toString(); 
String Price = ((TextView) view.findViewById(R.id.duration)).getText().toString(); 
String Image=((ImageView)view.findViewById(R.id.list_image)).getImageMatrix().toString(); 

// Starting new intent 
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class); 
in.putExtra(KEY_TITLE, Name); 
in.putExtra(KEY_ARTIST, Category); 
in.putExtra(KEY_THUMB_URL, Image); 
in.putExtra(KEY_DURATION, Price); 
startActivity(in); 

следующая цель деятельности является пользователь, нажав один конкретный продукт из списка продуктов, время следующего действия должны отображаться, что конкретные детали продукта.

nextactivity является SingleMenuLietItem.java исходный код

package com.example.truebranches; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Matrix; 
import android.os.Bundle; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class SingleMenuItemActivity extends Activity { 

// XML node keys 
static final String KEY_TITLE = "Name"; 
static final String KEY_ARTIST = "Category"; 
static final String KEY_THUMB_URL = "Image"; 
static final String KEY_DURATION = "Price"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.single_list_item); 

// getting intent data 
Intent in = getIntent(); 

// Get XML values from previous intent 
String Name = in.getStringExtra(KEY_TITLE); 
String ProductURL = in.getStringExtra(KEY_ARTIST); 
String Image = in.getStringExtra(KEY_THUMB_URL); 
String Price = in.getStringExtra(KEY_DURATION); 


// Displaying all values on the screen 
TextView lblName = (TextView) findViewById(R.id.name_label); 
TextView lblProductURL = (TextView) findViewById(R.id.producturl_label); 
ImageView lblImage = (ImageView) findViewById(R.id.image_label); 
TextView lblCost = (TextView) findViewById(R.id.price_label); 

lblName.setText(Name); 
lblProductURL.setText(ProductURL); 
lblImage.setImageResource(Image); 
lblCost.setText(Price); 

} 
} 

Вот следующая деятельность должна отображать TextView продукт details..but изображение не отображается ..because я борюсь в этой части ... так что строка, которую я должен изменить для изображения, будет отображаться в следующем действии. Здесь
lblImage.setImageResourse (изображение) У этой строки есть ошибка Метод setImageResource (int) в типе ImageView не применим для аргументов (String). .. как это очищается. пожалуйста помогите.

ответ

0

Не можете ли вы просто установить изображение, как при установке изображений элементов списка?

я думаю, что это не работает из-за этого:

String Image=((ImageView)view.findViewById(R.id.list_image)).getImageMatrix().toString(); 

UPDATE: использовать этот метод для загрузки изображения:

public void downloadImage(String url, String pictureName) { 
     final HttpClient client = new DefaultHttpClient(); 
     final HttpGet getRequest = new HttpGet(url); 

    String packageName = Environment.getExternalStorageDirectory() + "/" 
     + getString(R.string.app_name); 

    folder = new File(packageName); 
    folder.mkdirs(); 
    File f = new File(folder, pictureName); 

    try { 
     HttpResponse response = client.execute(getRequest); 
     final int statusCode = response.getStatusLine().getStatusCode(); 
     if (statusCode != HttpStatus.SC_OK) { 
      Log.w("ImageDownloader", "Error " + statusCode + 
        " while retrieving bitmap from " + url); 

     } 

     final HttpEntity entity = response.getEntity(); 
     if (entity != null) { 
      InputStream inputStream = null; 
      try { 
       inputStream = entity.getContent(); 
       // Bug on slow connections, fixed in future release. 
       Bitmap bm = BitmapFactory.decodeStream(new FlushedInputStream(inputStream)); 
       try { 
        FileOutputStream out = new FileOutputStream(f.getAbsolutePath()); 
        bm.compress(Bitmap.CompressFormat.PNG, 90, out); 
       } catch (Exception e) { 
         e.printStackTrace(); 
       } 
       bm.recycle(); 
      } finally { 
       if (inputStream != null) { 
        inputStream.close(); 
       } 
       entity.consumeContent(); 
      } 
     } 
    } catch (IOException e) { 
     getRequest.abort(); 
     Log.w("ImageDownload", "I/O error while retrieving bitmap from " + url, e); 
    } catch (IllegalStateException e) { 
     getRequest.abort(); 
     Log.w("ImageDownload", "Incorrect URL: " + url); 
    } catch (Exception e) { 
     getRequest.abort(); 
     Log.w("ImageDownload", "Error while retrieving bitmap from " + url, e); 
    } finally { 
    } 
} 

и в вашем SingleMenuItemActivity:

String packageName = Environment.getExternalStorageDirectory() + "/" 
      + getString(R.string.app_name); 

folder = new File(packageName); 
folder.mkdirs(); 
File f = new File(folder, pictureName); 
Bitmap bitmap = null; 
if (f.isFile()) 
    try { 
     bitmap = BitmapFactory.decodeStream(f.toURL().openStream()); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
if (bitmap != null) 
    lblImage.setImageBitmap(bitmap); 
+0

Я не знаю этого метода ... поэтому, пожалуйста, дайте мне решения .. как это делает – hariprasad

+0

где есть e образ, который вы хотите установить в SingleMenuItemActivity? он находится в папке с возможностью выбора или вам нужно скачать его по ссылке? –

+0

скачать его по ссылке – hariprasad

Смежные вопросы