0

こんにちは、Android アプリケーションで 1 つの 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);

次の活動の目的は、ユーザーが製品のリストから特定の製品をクリックすることであり、次の活動ではその特定の製品の詳細を表示する必要があります。

次のアクティビティは 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);

}
}

ここで、次のアクティビティはテキストビューの製品詳細を表示する必要があります..しかし、画像は表示されません..この部分で苦労しているため...画像のために変更する必要がある行は、次のアクティビティに表示されます
.here lblImage. setImageResourse(Image) dis 行にエラーがあり、ImageView 型のメソッド setImageResource(int) は引数 (String) に適用できません...どのようにクリアされますか。私を助けてください。

4

1 に答える 1

0

リストアイテムの画像を設定するときのように、画像を設定することはできませんか?

これが原因で機能していないと思います:

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

更新: この方法を使用してイメージをダウンロードします。

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);
于 2012-05-11T07:24:31.593 に答える