-2

重複の可能性:
アクティビティ間でドローアブルを渡す方法

このリストビューの画像とテキストを別のアクティビティに渡したいです。画像とテキストの両方を表示する別のアクティビティに画像とテキストを渡す方法を誰かに説明してもらえますか

コードには、この list_display クラスに 2 つのアクティビティ ホーム アクティビティと list_display があり、画像とテキストを含むカスタム リストビューを作成しました。画像とテキストを含むリストビューを取得したので、画像とテキストの両方を表示する 3 番目のアクティビティに画像とテキストを渡したいと思います。

ホームアクティビティ

    public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v.getId()==R.id.iv_animals)
    {
        Intent intent=new Intent(Home_Activity.this,List_Display.class);
        intent.putExtra("type", "animal");
        startActivity(intent);
    }else if(v.getId()==R.id.iv_wild)
    {
        Intent intent=new Intent(Home_Activity.this,List_Display.class);
        intent.putExtra("type", "wild");
        startActivity(intent);
    }

package com.myown.kidszoo;

 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;

 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.BaseAdapter;
 import android.widget.GridView;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.SimpleAdapter;
 import android.widget.TextView;

  public class List_Display extends Activity implements OnItemClickListener {
Object animalArray[][]={{"animal",R.drawable.a_american_alligator,"ALIGATOR"},"animal",R.drawable.bear,"BEAR"},
                        {"animal",R.drawable.camel,"CAMEL"},{"animal",R.drawable.dog,"DOG"},
                        {"wild",R.drawable.elephant,"ELEPHANT"},{"wild",R.drawable.fox,"FOX"},
                        {"wild",R.drawable.giraffe,"GIRAFFE"},{"wild",R.drawable.hippopotamus,"HIPPOPOTAMUS"},


String i;
int lstIndex;
int pos;
public Context mContext;
@Override
public void onCreate(Bundle instance) {
    super.onCreate(instance);
    setContentView(R.layout.list_sample);
    i=getIntent().getExtras().getString("type");
    List<HashMap<String,Object>> nameList=new ArrayList<HashMap<String,Object>>();
    HashMap<String,Object> hm=new HashMap<String, Object>();
    if(i.equals("animal"))
    {
    for(int i=0;i<animalArray.length;i++) {
            hm.put("name", animalArray[i][1]);
            hm.put("image", animalArray[i][2]);
            nameList.add(hm);
    }}
    if(i.equals("wild"))
    {
    for(int i=0;i<animalArray.length;i++) {
            hm.put("name", animalArray[i][1]);
            hm.put("image", animalArray[i][2]);
            nameList.add(hm);
    }}


    ListView lv1=(ListView)findViewById(R.id.ListView1);
    String from[]={"image","name"};
    int to[]={R.id.iv_home_singlelist,R.id.tv_name_single};
    SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(), nameList, R.layout.single_list, from, to);
    lv1.setAdapter(adapter);
    lv1.setOnItemClickListener(this);

}
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
    // TODO Auto-generated method stub
    Intent intent=new Intent(List_Display.this,Fullimage_Display.class);
    //
    // what data i need to give here to go to next activity
    startActivity(intent);

};
}
4

4 に答える 4

0

事実上、画像をビットマップに変換することはできますが、最適化されておらず、非常に時間がかかる可能性があると思います。可能な限り、画像の参照をExtraに配置する必要があります(リソースIDなど)。

于 2012-11-28T09:23:53.863 に答える
0

以下のように、ビットマップのバッファを putExtra に入れます。

Bitmap.getPixels(int[] mybuffer,...)

Intent.putExtra("MyBuffer",mybuffer)

他のアクティビティから取得するには、次のようにします。

int[] mynewbuffer = Intent.getIntArrayExtra("MyBuffer")

ビットマップ myBitmap = Bitmap.createBitmap(mybuffer,...)

于 2012-11-28T11:11:24.367 に答える
0

2 つのアクティビティ間で画像を渡す必要がある場合は、まず画像をビットマップに変換し、次にこのコードを使用してビットマップを渡す必要があります。

 Intent intent = new Intent(Current.this, Next.class);
 intent.putExtra("bmp", bitmap); // for image
 intent.putExtra("text", text); //for text 
 startActivity(intent);

アクティビティ 2 ではこれを使用し、

 Bitmap bitmap = getIntent().getParcelableExtra("bmp");
于 2012-11-28T09:16:51.767 に答える
0

インテントのエクストラ経由で大きな画像を渡すことはできません。しかし、あなたのコードでは、すべての画像が描画可能なリソースのようです。そのため、「int」番号のリソース ID を渡すだけで、次のアクティビティでリソースから画像をリロードできます。

于 2012-11-28T09:20:15.717 に答える