2016-11-21 3 views
-2

У меня есть два вида деятельности (Main & Sub) оба содержат просмотр списка для отображения изображений. Я хочу повторно использовать вспомогательную активность для отображения изображений в соответствии с щелчком ячейки в основном действии (что-то вроде меню «Ресторан»). Таким образом, я объявил массив целых массивов (изображения в папке с возможностью переноса), которые я хочу передать суб-активности, и поддиапазонAndroid: Как передать массив Integer между действиями?

Я попытался под кодом, но я закончил конфликт 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> { 
... 
} 

Любая помощь будет оценена.

+0

изменить на примитив int вместо Integer –

+0

если бы я сделал это, адаптер не будет кроме этого !! адаптер

+0

создать другой массив, а затем просто передать значения, если это так, однако вы также можете использовать конструктор адаптера для этого вместо использования генериков –

ответ

0

Создать Bundle и сохранить как parcelable массив

2

ли Массивы хранить идентификатор ресурса? Вы думали использовать 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>

Таким образом, вы можете получить их с помощью контекста.

+0

PLZ может управить меня в каком-то примере? –

+0

у вас есть подмассив для хранения массива id. Таким образом, вы можете использовать простую переменную 'int subarray = 2', чтобы вы могли передать ее другим действиям, и вы можете получить правильный массив. <имя целочисленного массива = "resource1"> '' ..<имя целочисленного массива = "resource2"> '' .. '<имя целочисленного массива = "Resource3"> ..' end вы можете сделать выбор 'if (subarray == 1) context.getIntegerArray (R.array.resource1) ...' , пожалуйста, проверьте правильность имени метода! – hooloovoo

+0

спасибо, человек, работает как шарм –

Смежные вопросы