2012-03-08 66 views
0

我有两个自己的网格视图和适配器的活动,我想从一个活动传递一个数据(包含图像(以位图资源的形式)和文本)。我遇到的问题是图像。它不会在gridview上显示文本,当我尝试添加另一个数据时,它会覆盖前一个。请有人能告诉我我做错了什么或我需要做什么? (我希望这个应用程序的功能就像当你将一个喜欢的在线电台添加到预设列表中一样)。 下面是acitivies(裁剪)如何让我的位图传递给另一个活动是可见的?

第一个活动

com_res=getResources(); 

    Comm_AppsList=new ArrayList<Appis_Infos>(); 
    Comm_AppsList.add(new Appis_Infos(BitmapFactory.decodeResource(com_res, R.drawable.skype), "Skype","com.skype.raider")); 
    Comm_AppsList.add(new Appis_Infos(BitmapFactory.decodeResource(com_res, R.drawable.yahoomessenger),"Messenger","com.yahoo.mobile.client.android.im")); 
public boolean onContextItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
    int menuItemIndex = item.getItemId(); 

    String[] menuItems = getResources().getStringArray(R.array.menu); 
    String menuItemName = menuItems[menuItemIndex]; 
    int menuappname=info.position; 

     Appis_Infos AppName = Comm_AppsList.get(menuappname); 
     Bitmap itemB=AppName.getIcon();//This is what I need as the image to the other class but when I use it in the Bitmapfactory I get an error 


     Bitmap bmp = BitmapFactory.decodeResource(com_res, menuItemIndex); 
     Intent favList=new Intent(this.getApplicationContext(),FavouriteListAppis.class); 
     Bundle Bbundle=new Bundle(); 
     Bbundle.putParcelable("KeyB", bmp); 

     favList.putExtra("KeyName", AppName.getName()); 
     startActivity(favList); 
     Toast.makeText(getApplicationContext(), AppName.getName()+" has been added to your favourite list "+menuItemIndex, Toast.LENGTH_LONG).show(); 

    return true; 
} 
class CommAppis_Adapter extends BaseAdapter{ 
private Context AIcontext; 
private List<Appis_Infos>AdList; 

CommAppis_Adapter(Context Aicontext, List<Appis_Infos> aDlist){ 
AIcontext=Aicontext; 
AdList=aDlist; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return AdList.size(); 
} 

@Override 
public Object getItem(int it_position) { 
    // TODO Auto-generated method stub 
    return AdList.get(it_position); 
} 

@Override 
public long getItemId(int id_position) { 
    // TODO Auto-generated method stub 
    return id_position; 
} 

@Override 
public View getView(int Vposition, View Aview, ViewGroup Vparent) { 
    // TODO Auto-generated method stub 
    Appis_Infos appsData=AdList.get(Vposition); 
    Comm_Viewholder holder=null; 

    if(Aview==null){ 
     LayoutInflater apps_inflater=LayoutInflater.from(AIcontext); 
     Aview=apps_inflater.inflate(R.layout.comm_appis, null); 
     holder=new Comm_Viewholder(); 

     holder.apps_icons=(ImageView)Aview.findViewById(R.id.comm_imageview); 
     holder.apps_name=(TextView)Aview.findViewById(R.id.comm_tvName); 


     Aview.setTag(holder); 
    }else{ 
     holder=(Comm_Viewholder)Aview.getTag(); 
    } 

    holder.apps_icons.setImageBitmap(appsData.getIcon()); 
    holder.apps_name.setText(appsData.getName()); 

    return Aview; 
} 

} 
class Comm_Viewholder{ 
ImageView apps_icons; 
TextView apps_name; 

} 

第二个活动

Fav_gridview=(GridView)findViewById(R.id.gvfavist); 
    Resources fav_res=getResources(); 

    if(getIntent().getExtras()!=null) { 
     Bundle bundle = this.getIntent().getExtras(); 
     bmp = bundle.getParcelable("KeyB"); 

     favapp=getIntent().getExtras().getString("KeyName"); 


    } 
    Fav_AppsList=new ArrayList<Appis_Infos>(); 
     Fav_AppsList.add(new Appis_Infos(bmp, favapp,"com.skype.raider")); 



     class FavAppis_Adapter extends BaseAdapter{ 
private Context AIcontext; 
private List<Appis_Infos>AdList; 

FavAppis_Adapter(Context Aicontext, List<Appis_Infos> aDlist){ 
AIcontext=Aicontext; 
AdList=aDlist; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return AdList.size(); 
} 

@Override 
public Object getItem(int it_position) { 
    // TODO Auto-generated method stub 
    return AdList.get(it_position); 
} 

@Override 
public long getItemId(int id_position) { 
    // TODO Auto-generated method stub 
    return id_position; 
} 

@Override 
public View getView(int Vposition, View Aview, ViewGroup Vparent) { 
    // TODO Auto-generated method stub 
    Appis_Infos appsData=AdList.get(Vposition); 
    Fav_Viewholder holder=null; 

    if(Aview==null){ 
     LayoutInflater apps_inflater=LayoutInflater.from(AIcontext); 
     Aview=apps_inflater.inflate(R.layout.favlist_appis, null); 
     holder=new Fav_Viewholder(); 

     holder.apps_icons=  (ImageView)Aview.findViewById(R.id.favlistimageview); 
     holder.apps_name=(TextView)Aview.findViewById(R.id.favlisttvName); 


     Aview.setTag(holder); 
    }else{ 
     holder=(Fav_Viewholder)Aview.getTag(); 
    } 

    holder.apps_icons.setImageBitmap(appsData.getIcon()); 
    holder.apps_name.setText(appsData.getName()); 

    return Aview; 
} 

} 
class Fav_Viewholder{ 
ImageView apps_icons; 
TextView apps_name; 

} 

他们共同的阶级

public class Appis_Infos { 
private Bitmap AIcon; 
private String Aname; 
private String packname; 

public Appis_Infos(Bitmap icon, String name, String pname){ 
    AIcon=icon; 
    Aname=name; 
    packname=pname; 
} 
public void setIcon(Bitmap icon){ 
    AIcon=icon; 
} 
public Bitmap getIcon(){ 
    return AIcon; 
} 
public void setName(String name){ 
    Aname=name; 
} 
public String getName(){ 
    return Aname; 
} 
public void setPname(String pname){ 
    packname=pname; 
} 
public String getPname(){ 
    return packname; 
} 
} 
+0

不要尝试使用意图传递位图。 – 2012-03-08 09:21:47

+0

然后我使用什么? – 2012-03-08 09:27:55

回答

0

你可以简单地命名你位图作为静态第一。

然后创建

public static Bitmap getBitmap(){ 
    return bitmap; 
} 

的方法,那么你可以简单地从其他活动的呼吁, bitmapwantedclass.getBitmap();

希望它有帮助

+0

感谢但使位图staic不起作用,因为它保留了它用来填充调用getBitmap()的其他类的最后一个图像。 – 2012-03-08 09:43:13

+0

什么是要求,你可以解释清楚.. – 2012-03-08 09:45:43

+0

你知道这个应用程序tunein?它的一个在线广播应用程序。我想要做的第二项活动就像当你在播放电台时一样,然后将电台添加到预设列表中。它只是将该电台的图标和名称发送到预设列表。 – 2012-03-08 09:52:10

相关问题