Android:如何在活动之间传递Integer数组?

时间:2016-11-21 15:02:07

标签: android arrays listview

我有两个活动(Main& Sub)都包含列表视图以显示图像。我想重复使用子活动来根据主要活动中的单元格点击显示图像(像餐馆菜单这样的东西)。所以我已经声明了一个整数数组(可绘制文件夹中的图像),我想传递给子活动和子辅助

我尝试了下面的代码,但我以Int和Integer冲突结束了。

主要活动

public class AppsMenu extends AppCompatActivity {

    ListView appsmainlist;
    Integer[] images={R.drawable.res,R.drawable.clo,R.drawable.beu,R.drawable.col,R.drawable.tor,R.drawable.hot};
    Integer[][] subarray = {{R.drawable.res1,R.drawable.res2,R.drawable.res3,R.drawable.res4},{R.drawable.clo1,R.drawable.clo2,R.drawable.clo3,R.drawable.clo4}};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_apps_menu);
        appsmainlist = (ListView) findViewById(R.id.appsmainlist);
        appsmenuadapter appsmenuadapter = new appsmenuadapter(this,images);
        appsmainlist.setAdapter(appsmenuadapter);
        appsmainlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                    Intent intent = new Intent(AppsMenu.this,appsview.class);
                    intent.putExtra("subarray",subarray[i]);
                    startActivity(intent);


            }
        });
    }
}

子活动

ListView appsviewlist;
Integer [] appsviewarray;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_appsview);
    appsviewlist = (ListView) findViewById(R.id.appsviewlist);

// Error goes here
        appsviewarray = getIntent().getIntArrayExtra("subarray");
        appsviewadapter appsviewadapter = new appsviewadapter(this,appsviewarray);
    }

适配器:

public class subadapter extends ArrayAdapter<Integer> {
...
}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

数组是否保留资源ID? 您是否考虑过使用Resource Array?

这样的事情:

<integer-array name="resoruces"> <item>@drawable/amex</item> <item>@drawable/mastercard</item> <item>@drawable/mastercard_white</item> <item>@drawable/visa</item> </integer-array>

通过这种方式,您可以使用上下文来获取它们。

答案 1 :(得分:0)

创建Bundle并保存为parcelable array