如何将一个类的字符串数组发送到android中的另一个类

时间:2012-04-04 09:47:40

标签: java android android-layout

MainMenulist.java在此类字符串数组中存储所有值public String [] itemcodes;我想要访问Main.java的项目代码

Main.java

  JSONArray json = jArray.getJSONArray("mainmenu");
        list=(ListView)findViewById(R.id.mainmenulist);
         adapter=new MainMenulist(this, json);
         list.setAdapter(adapter);
           MainMenulist.java
      public class MainMenulist extends BaseAdapter {
protected static Context Context = null;
int i;
public String editnewmainmenu,menuname;
String qrimage;
Bitmap bmp, resizedbitmap;
Bitmap[] bmps;
Activity activity = null;
private LayoutInflater inflater;

private ImageView[] mImages;
String[] itemimage;
TextView[] tv;
String itemname,itemcode;
public String[] itemnames,itemcodes;
HashMap<String, String> map = new HashMap<String, String>();

public MainMenulist(Context context, JSONArray imageArrayJson) {
    Context = context;
    // inflater =
    // (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    // imageLoader=new ImageLoader(activity);
    inflater = LayoutInflater.from(context);
    this.mImages = new ImageView[imageArrayJson.length()];
    this.bmps = new Bitmap[imageArrayJson.length()];
    this.itemnames = new String[imageArrayJson.length()];
    this.itemcodes=new String[imageArrayJson.length()];

    try {

        for (i = 0; i < imageArrayJson.length(); i++) {
            JSONObject image = imageArrayJson.getJSONObject(i);
            qrimage = image.getString("menuimage");
            itemname = image.getString("menuname");
            itemcode=image.getString("menucode");
            itemnames[i] = itemname;
            itemcodes[i]=itemcode;

            byte[] qrimageBytes = Base64.decode(qrimage.getBytes());

            bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0,
                    qrimageBytes.length);
            int width = 100;
            int height = 100;
            resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height,
                    true);
            bmps[i] = bmp;

            mImages[i] = new ImageView(context);
            mImages[i].setImageBitmap(resizedbitmap);

            mImages[i].setScaleType(ImageView.ScaleType.FIT_START);

            // tv[i].setText(itemname);
        }
        System.out.println(itemnames[i]);
        System.out.println(map);

    } catch (Exception e) {
        // TODO: handle exception
    }
}

public int getCount() {
    return mImages.length;
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(final int position, View convertView, ViewGroup parent) {

    View vi = convertView;

    vi = inflater.inflate(R.layout.mainmenulistview, null);

final   TextView text = (TextView) vi.findViewById(R.id.menutext);
    ImageView image = (ImageView) vi.findViewById(R.id.menuimage);

    System.out.println(itemcodes[position]);
    image.setImageBitmap(bmps[position]);

    text.setText(itemnames[position]);
    text.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(itemcodes[position].equals("1"))
            {
                Intent intent = new Intent(Context, FoodMenu.class);
                System.out.println("prakash");

                Context.startActivity(intent);
            }
            else {
                Toast.makeText(Context, "This Feauture is not yet Implemented",4000).show();
            }

        }
    });       

    return vi;

}

    }

MainMenulist.java System.out.println(itemcodes [position]);在这里我打印所有代码。我想要在Main.java中打印相同的结果

2 个答案:

答案 0 :(得分:0)

There are two ways to do this:

In your code:

    public String[] itemnames,itemcodes; make that arrays as static like below

    public static String[] itemnames,itemcodes; 

And then use `Main.java` file by calling:

    System.out.println(MainMenulist.itemcodes[position]);
    System.out.println(MainMenulist.itemnames[position]);

2) Parse JSON in Main.java which you have pass to MainMenulist.java

    public MainMenulist(Context context, JSONArray imageArrayJson) 

答案 1 :(得分:0)

编写一个bean,为你的数组(itemnames)实现serlizable,write setter和getter方法,如下所示

class Bean implements Serializable{
    String itemnames[];

    public Hashtable getItemnames() {
        return itemnames;
    }

    public void setItemnames(String itemnames[]) {
        this.itemnames= itemnames;
    }

}

在调用活动中写下无用的代码

 Bean b = new Bean();
    b.setItemnames(itemnames);

    Intent i=new Intent();
    i.setClass(A.this,B.class);
    i.putExtra("itemnames", b);
    startActivity(i);

并在被调用的活动中检索如下

Bean obj = (Bean) getIntent().getSerializableExtra("itemnames");// TypeCasting 
String itemname[] = (Hashtable) obj.getItemnames();