Как сделать чтобы данные layout менялись при нажатии на button/imageView?
Как сделать чтобы данные layout менялись(текст, картинки) при нажатии на button/imageView?
Для каждого персонажа нужно много layout,activity нужно как-то минимизировать код...

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_agillity);
toolbar=findViewById(R.id.myToolBar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
imageAntimag = (ImageView) findViewById(R.id.imageAntimag);
imageAntimag.setOnClickListener(this);
}
public boolean onSupportNavigateUp(){
onBackPressed();
return true;
}
@Override
public void onBackPressed(){
Intent intent = new Intent(this, ActivityHeroes.class);
startActivity(intent);
finish();
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageAntimag:
Intent intent = new Intent(this, ActivityHero.class);
startActivity(intent);
// TODO Call second activity
break;
default:
break;
}
}
герой
public class ActivityHero extends AppCompatActivity implements View.OnClickListener {
private Toolbar toolbar;
Button btnAllies;
Button pick;
Button button_sborka;
ImageView tallents;
ImageView aganim;
ImageView shard;
View skill1;
View skill2;
View skill3;
View skill4;
Dialog dialogAganim;
Dialog dialogShard;
Dialog dialogTalletns;
Dialog dialogSpell1;
Dialog dialogSpell2;
Dialog dialogSpell3;
Dialog dialogSpell4;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hero);
toolbar=findViewById(R.id.myToolBar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
btnAllies = (Button) findViewById(R.id.btnAllies);
btnAllies.setOnClickListener(this);
pick = (Button) findViewById(R.id.button_pick);
pick.setOnClickListener(this);
button_sborka = (Button) findViewById(R.id.button_sborka);
button_sborka.setOnClickListener(this);
tallents = (ImageView) findViewById(R.id.tallents);
tallents.setOnClickListener(this);
aganim = (ImageView) findViewById(R.id.aganim_button);
aganim.setOnClickListener(this);
shard = (ImageView) findViewById(R.id.shard);
shard.setOnClickListener(this);
skill1 = (View) findViewById(R.id.viewSkill1);
skill1.setOnClickListener(this);
skill2 = (View) findViewById(R.id.viewSkill2);
skill2.setOnClickListener(this);
skill3 = (View) findViewById(R.id.viewSkill3);
skill3.setOnClickListener(this);
skill4 = (View) findViewById(R.id.viewSkill4);
skill4.setOnClickListener(this);
dialogAganim = new Dialog(this);
dialogShard = new Dialog(this);
dialogTalletns = new Dialog(this);
dialogSpell1 = new Dialog(this);
dialogSpell2 = new Dialog(this);
dialogSpell3 = new Dialog(this);
dialogSpell4 = new Dialog(this);
}
@Override
public void onBackPressed(){
Intent intent = new Intent(this, ActivityAgillity.class);
startActivity(intent);
finish();
}
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
public boolean onSupportNavigateUp(){
onBackPressed();
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnAllies:
Intent intent = new Intent(this, ActivityAllies.class);
startActivity(intent);
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.button_pick:
Intent intent = new Intent(this, ActivityContrPick.class);
startActivity(intent);
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.button_sborka:
Intent intent = new Intent(this, ActivitySborka.class);
startActivity(intent);
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.button_sborka:
Intent intent = new Intent(this, ActivitySborka.class);
startActivity(intent);
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.aganim_button:
aganim();
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.shard:
shard();
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.shard:
shard();
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.tallents:
talletns();
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.viewSkill1:
dialogSpell1();
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.viewSkill2:
dialogSpell2();
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.viewSkill3:
dialogSpell3();
// TODO Call second activity
break;
default:
break;
}
switch (v.getId()) {
case R.id.viewSkill4:
dialogSpell4();
// TODO Call second activity
break;
default:
break;
}
}
private void aganim (){
dialogAganim.setContentView(R.layout.dialog_aganim);
dialogAganim.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogAganim.show();
}
private void shard (){
dialogShard.setContentView(R.layout.dialog_shard);
dialogShard.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogShard.show();
}
private void talletns (){
dialogTalletns.setContentView(R.layout.dialog_talents);
dialogTalletns.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogTalletns.show();
}
private void dialogSpell1 (){
dialogSpell1.setContentView(R.layout.dialog_ability1);
dialogSpell1.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogSpell1.show();
}
private void dialogSpell2 (){
dialogSpell2.setContentView(R.layout.dialog_ability2);
dialogSpell2.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogSpell2.show();
}
private void dialogSpell3(){
dialogSpell3.setContentView(R.layout.dialog_ability3);
dialogSpell3.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogSpell3.show();
}
private void dialogSpell4 (){
dialogSpell4.setContentView(R.layout.dialog_ability4);
dialogSpell4.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogSpell4.show();
}
}
Ответы (2 шт):
Я в свое время создавал массив классов со всеми героями:
public static Heroes[] heroesList = {
new Heroes("Abaddon", R.drawable.pic_hero_abaddon, 1, "100200020",
"22 +2.6", "23 +1.5", "18 +2.0",
"50-60", "1.7", "150", null,
"2.8", "25%",
325, "0.6", "1800/800",
R.array.talents_abaddon, HeroesAbilities.abaddon_abilities,
HeroesAghanims.abaddon_aghanims, 1, 1, 102,
"640 +3.2", "291 +1.2"),
//...
};
В каждого героя передавал соответствующий массив класса способностей:
public static HeroesAbilities[] abaddon_abilities = {
new HeroesAbilities("Mist Coil", R.drawable.pic_ability_abaddon_mist_coil,
"5.5", "50",
R.string.abaddon_mist_coil_description_1, R.string.abaddon_mist_coil_description_2,
new Integer[]{R.string.ABILITY_UNIT_TARGET, R.string.AFFECTS_UNITS, R.string.DAMAGE_TYPE_MAGICAL, R.string.PIERCES_SPELL_IMMUNITY_1, 0},
R.array.abaddon_mist_coil, new String[]{"50%", "110/160/210/260", "575"}),
//...
};
И передавал в активити с героем лишь его номер, а дальше уже из массива из первого пункта доставалось и расставлялось все, что нужно.
private void pasteHeroData(){
Heroes currentHero = Heroes.heroesList[heroNumber];
//Name
TextView heroName = findViewById(R.id.heroName);
heroName.setText(currentHero.name);
//Image
ImageView heroImage = findViewById(R.id.heroImage);
heroImage.setImageResource(currentHero.imageId);
//HP & Mana
TextView hp = findViewById(R.id.hp), mana = findViewById(R.id.mana);
hp.setText(currentHero.hp);
mana.setText(currentHero.mana);
//Attributes
TextView strength = findViewById(R.id.strength), agility = findViewById(R.id.agility),
intelligence = findViewById(R.id.intelligence);
strength.setText(currentHero.strength);
agility.setText(currentHero.agility);
intelligence.setText(currentHero.intelligence);
//...
}
Если я правильно понял, то тебя беспокоит создание более сотни активити для каждого героя. Так вот это не нужно, мне на всех хватило всего одной.
P.S: В код можешь не вдумываться – он тут как идея. Думаю создать классы на данном этапе трудности не составит.
public Heroes(String name, int imageID, int primary_attribute_number, String roles,
String strength, String agility, String intelligence,
String base_damage, String attack_speed, String attack_range, String projectile_speed,
String armor, String magic_resistance,
int move_speed, String turn_rate, String vision_range,
int talents_array, HeroesAbilities[] abilities_list, HeroesAghanims[] aghanims_list,
int attack_type, int complexity, int add_number,
String hp, String mana) {
this.name = name;
this.imageId = imageID;
this.primary_attribute_number = primary_attribute_number;
this.roles = roles;
this.strength = strength;
this.agility = agility;
this.intelligence = intelligence;
this.base_damage = base_damage;
this.attack_speed = attack_speed;
this.attack_range = attack_range;
this.projectile_speed = projectile_speed;
this.armor = armor;
this.magic_resistance = magic_resistance;
this.move_speed = move_speed;
this.turn_rate = turn_rate;
this.vision_range = vision_range;
this.talents_array = talents_array;
this.abilities_list = abilities_list;
this.aghanims_list = aghanims_list;
this.attack_type = attack_type;
this.complexity = complexity;
this.add_number = add_number;
this.hp = hp;
this.mana = mana;
}
Зачем вам столько imageBotton ? Используйте RecyclerView и класс PoJo (module) ! Это не так уж сложно (°_°)