0

アイテムのリストを作成するためにjsonを使用しています。ユーザーがクリックすると、そのアイテムに関する詳細が表示された別の画面が開きます。そのアクティビティへの画像の送信に問題があります。これはjson解析のための私のコードです:

for (int i = 0; i < data.length(); i++) {
        JSONObject c = data.getJSONObject(i);

        String id = c.getString(TAG_ID);
        String name = c.getString(TAG_NAME);
        String link_image = c.getString(TAG_LINK_IMAGE);        

        HashMap<String, String> map = new HashMap<String, String>();

        map.put(TAG_ID_RS, id);
        map.put(TAG_NAME, name);
        map.put(TAG_LINK_IMAGE, link_image);

        Data.add(map);
}

これは setOnItemClickListener 用です。

public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                    String name_two = ((TextView) view
                            .findViewById(R.id.name)).getText()
                            .toString();

                    Intent i = new Intent(getApplicationContext(),
                    SingleItem.class);

                    i.putExtra("name", name_two);

                    startActivity(i);

                }

文字列「名前」を送信する場合、TextView を見つけて文字列を引き出していますが、画像はどうですか? ありがとう。

4

2 に答える 2

1

インテント バンドルは、大量のデータを渡すためのものではありません。URI などの少量のテキストに使用するのが最適です。

画像がどこから来ているのかわからないので、アプリケーションの /res またはキャッシュ ディレクトリ内のどこかに保存された画像であると推測します。

これが本当なら、最善の策は (これらのアクティビティが同じアプリケーション内にある場合)、インテント内で画像が保存されている場所を渡すことです。そうすれば、インテントによる画像のエンコード/デコードを回避できます。

2 つのアクティビティが別々のアプリケーションにある場合。次に、これはコンテンツ プロバイダーの標準的なユース ケースです。

同様のことをしようとしている他の2つの質問がありますIntent.putExtras size limit? Intent putExtra メソッドの 最大長は? (Force close) を入力し、インテントでデータを渡します。データを入れすぎると、どちらもシステムがハングアップしました。最初に推奨されたデータ ストレージ メカニズム ソリューションとして Application クラスを使用しないことを強くお勧めします。Android の設計が非常に悪く、将来的に緊急のエラーが発生する可能性があります。共有設定 (アプリケーション全体の設定用) またはファイル転送用のコンテンツ プロバイダー/ローカル キャッシュ ファイルは、はるかに堅牢な答えです。

于 2013-09-25T11:36:12.993 に答える
0

あなたは持っていてint position、あなたはと呼ばれるコレクションを持っていますData

あなたが使用することができます:

String link =  Data.get(position).get(TAG_LINK_IMAGE);
于 2013-09-25T11:35:17.550 に答える