为listview组件创建描述的更有效方法?

时间:2018-10-06 17:43:59

标签: java android

我有一个包含400多个组件的列表视图,我想知道是否存在一种更简单的方法来为每个单独的元素创建描述,而不必创建其他类。我想使此过程更容易的唯一方法是使用Web视图,但是我环顾四周,人们已经在这里说过,效果不是很好。

这是我的代码:

package com.example.admin.spelltable;

import android.app.Activity;
import android.app.Application;
import android.content.ClipData;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Layout;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class Spelltable extends AppCompatActivity {

ListView mySpellbook;
List spells = new ArrayList();
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_spelltable);
    mySpellbook = findViewById(R.id.mySpellbook);

    //Spell Names
    spells.add("Abi-Dalzim's Horrid Wiliting");
    spells.add("Absorb Elements");
    spells.add("Acid Splash");
    spells.add("Aganazzar's Scorcher");
    spells.add("Aid");
    spells.add("Alarm");
    spells.add("Alter Self");
    spells.add("Animal Friendship");
    spells.add("Animal Messenger");
    spells.add("Animal Shapes");
    spells.add("Animate Dead");
    spells.add("Animate Objects");
    spells.add("Antilife Shell");
    spells.add("Antimagic Field");
    spells.add("Antipathy/Sympathy");
    spells.add("Arcane Eye");
    spells.add("Arcane Gate");
    spells.add("Arcane Lock");
    spells.add("Armor of Agathys");
    spells.add("Arms of Hadar");
    spells.add("Astral Projection");
    spells.add("Augury");
    spells.add("Aura of Life");
    spells.add("Aura of Purity");
    spells.add("Aura of Vitality");
    spells.add("Awaken");
    spells.add("Bane");
    spells.add("Banishing Smite");
    spells.add("Banishment");
    spells.add("Barkskin");
    spells.add("Beacon of Hope");
    spells.add("Barkskin");
    spells.add("Beast Bond");
    spells.add("Beast Sense");
    spells.add("Bestow Curse");
    spells.add("Bidby's Hand");
    spells.add("Blade Barrier");
    spells.add("Blade Ward");
    spells.add("Bless");
    spells.add("Blight");
    spells.add("Blinding Smite");
    spells.add("Blindness/Deafness");
    spells.add("Blink");
    spells.add("Blur");
    spells.add("Bones of the Earth");
    spells.add("Booming Blade");
    spells.add("Branding Smite");
    spells.add("Burning Hands");
    spells.add("Call Lightning");
    spells.add("Calm Emotions");
    spells.add("Catapult");
    spells.add("Catnap");
    spells.add("Cause Fear");
    spells.add("Ceremony");
    spells.add("Chain Lightning");
    spells.add("Chaos Bolt");
    spells.add("Charm Monster");
    spells.add("Charm Person");
    spells.add("Chill Touch");
    spells.add("Chromatic Orb");
    spells.add("Circle of Death");
    spells.add("Circle of Power");
    spells.add("Clairvoyance");
    spells.add("Clone");
    spells.add("Cloud of Daggers");
    spells.add("Cloudkill");
    spells.add("Color Spray");
    spells.add("Command");
    spells.add("Commune");
    spells.add("Commune with Nature");
    spells.add("Compelled Duel");
    spells.add("Comprehend Languages");
    spells.add("Compulsion");
    spells.add("Cone of Cold");
    spells.add("Confusion");
    spells.add("Conjure Animals");
    spells.add("Conjure Barrage");
    spells.add("Conjure Celestial");
    spells.add("Conjure Elemental");
    spells.add("Conjure Fey");
    spells.add("Conjure Minor Elementals");
    spells.add("Conjure Volley");
    spells.add("Conjure Woodland Beings");
    spells.add("Contact Other Plane");
    spells.add("Contagion");
    spells.add("Contingency");
    spells.add("Continual Flame");
    spells.add("Control Flames");
    spells.add("Control Water");
    spells.add("Control Weather");
    spells.add("Control Winds");
    spells.add("Cordon of Arrows");
    spells.add("Counterspell");
    spells.add("Create Bonefire");
    spells.add("Create Food and Water");
    spells.add("Create Homunculus");
    spells.add("Create or Destroy Water");
    spells.add("Create Undead");
    spells.add("Creation");
    spells.add("Crown of Madness");
    spells.add("Crown of Stars");
    spells.add("Crusader's Mantle");
    spells.add("Cure Wounds");
    spells.add("Dancing Lights");
    spells.add("Danse Macabre");
    spells.add("Darkness");
    spells.add("Darkvision");
    spells.add("Dawn");
    spells.add("Daylight");
    spells.add("Death Ward");
    spells.add("Delayed Blast Fireball");
    spells.add("Demiplane");
    spells.add("Destructive Wave");
    spells.add("Detect Evil and Good");
    spells.add("Detect Magic");
    spells.add("Detect Poison and Disease");
    spells.add("Detect Thoughts");
    spells.add("Dimension Door");
    spells.add("Disguise Self");
    spells.add("Disintegrate");
    spells.add("Dispel Evil and Good");
    spells.add("Dispel Magic");
    spells.add("Dissonant Whispers");
    spells.add("Divination");
    spells.add("Divine Favor");
    spells.add("Divine Word");
    spells.add("Dominate Beast");
    spells.add("Dominate Monster");
    spells.add("Dominate Person");
    spells.add("Dragon's Breath");
    spells.add("Drawmij's Instant Summons");
    spells.add("Dream");
    spells.add("Druid Grove");
    spells.add("Druidcraft");
    spells.add("Dust Devil");
    spells.add("Earth Tremor");
    spells.add("Earthbind");
    spells.add("Earthquake");
    spells.add("Eldritch Blast");
    spells.add("Elemental Bane");
    spells.add("Elemental Weapon");
    spells.add("Enemies Abound");
    spells.add("Enervation");
    spells.add("Enhance Ability");
    spells.add("Enlarge/Reduce");
    spells.add("Ensnaring Strike");
    spells.add("Entangle");
    spells.add("Enthrall");
    spells.add("Erupting Earth");
    spells.add("Etherealness");
    spells.add("Evard's Black Tentacles");
    spells.add("Expeditious Retreat");
    spells.add("Eyebite");
    spells.add("Fabricate");
    spells.add("Faerie Fire");
    spells.add("False Life");
    spells.add("Far Step");
    spells.add("Fear");
    spells.add("Feather Fall");
    spells.add("Feeblemind");
    spells.add("Feign Death");
    spells.add("Find Familiar");
    spells.add("Find Greater Steed");
    spells.add("Find Steed");
    spells.add("Find the Path");
    spells.add("Find Traps");
    spells.add("Finger of Death");
    spells.add("Fire Bolt");
    spells.add("Fire Shield");
    spells.add("Fire Storm");
    spells.add("Fireball");
    spells.add("Flame Arrows");
    spells.add("Flame Blade");
    spells.add("Flame Strike");
    spells.add("Flaming Sphere");
    spells.add("Flesh to Stone");
    spells.add("Fly");
    spells.add("Fog Cloud");
    spells.add("Forbiddance");
    spells.add("Forcecage");
    spells.add("Foresight");
    spells.add("Freedom of Movement");
    spells.add("Friends");
    spells.add("Frostbite");
    spells.add("Gaseous Form");
    spells.add("Geas");
    spells.add("Gentle Repose");
    spells.add("Giant Insect");
    spells.add("Glibness");
    spells.add("Globe of Invulnerability");
    spells.add("Glyph of Wards");
    spells.add("Goodberry");
    spells.add("Grasping Vine");
    spells.add("Grease");
    spells.add("Greater Invisibility");
    spells.add("Greater Restoration");
    spells.add("Green-Flame Blade");
    spells.add("Guardian of Faith");
    spells.add("Guardian of Nature");
    spells.add("Guards and Wards");
    spells.add("Guidance");
    spells.add("Guiding Bolt");
    spells.add("Gust");
    spells.add("Gust of Wind");
    spells.add("Hail of Thorns");
    spells.add("Hallow");
    spells.add("Hallucinatory Terrain");
    spells.add("Harm");
    spells.add("Haste");
    spells.add("Heal");
    spells.add("Healing Spirit");
    spells.add("Healing Word");
    spells.add("Heat Metal");
    spells.add("Hellish Rebuke");
    spells.add("Heroes' Feast");
    spells.add("Heroism");
    spells.add("Hex");
    spells.add("Hold Monster");
    spells.add("Hold Person");
    spells.add("Holy Aura");
    spells.add("Holy Weapon");
    spells.add("Hunger of Hadar");
    spells.add("Hunter's Mark");
    spells.add("Hypnotic Pattern");
    spells.add("Ice Knife");
    spells.add("Ice Storm");
    spells.add("Identify");
    spells.add("Illusory Dragon");
    spells.add("Illusory Script");
    spells.add("Immolation");
    spells.add("Imprisonment");
    spells.add("Incendiary Cloud");
    spells.add("Infernal Calling");
    spells.add("Infestation");
    spells.add("Inflict Wounds");
    spells.add("Insect Plague");
    spells.add("Investiture of Flame");
    spells.add("Investiture of Ice");
    spells.add("Investiture of Stone");
    spells.add("Investiture of Wind");
    spells.add("Invisibility");
    spells.add("Invulnerability");
    spells.add("Jump");
    spells.add("Knock");
    spells.add("Legend Lore");
    spells.add("Leomund's Secret Chest");
    spells.add("Leomund's Tiny Hut");
    spells.add("Lesser Restoration");
    spells.add("Levitate");
    spells.add("Life Transference");
    spells.add("Light");
    spells.add("Lightning Arrow");
    spells.add("Lightning Bolt");
    spells.add("Lightning Lure");
    spells.add("Locate Animals or Plants");
    spells.add("Locate Creature");
    spells.add("Locate Object");
    spells.add("Longstrider");
    spells.add("Maddening Darkness");
    spells.add("Maelstrom");
    spells.add("Mage Armor");
    spells.add("Mage Hand");
    spells.add("Mage Circle");
    spells.add("Magic Jar");
    spells.add("Magic Missile");
    spells.add("Magic Mouth");
    spells.add("Magic Stone");
    spells.add("Magic Weapon");
    spells.add("Major Image");
    spells.add("Mass Cure Wounds");
    spells.add("Mass Heal");
    spells.add("Mass Healing Word");
    spells.add("Mass Polymorph");
    spells.add("Mass Suggestion");
    spells.add("Maximilian's Earthen Grasp");
    spells.add("Maze");
    spells.add("Meld into Stone");
    spells.add("Melf's Acid Arrow");
    spells.add("Melf's Minute Meteors");
    spells.add("Mending");
    spells.add("Mental Prison");
    spells.add("Message");
    spells.add("Meteor Swarm");
    spells.add("Mighty Fortress");
    spells.add("Mind Blank");
    spells.add("Mind Spike");
    spells.add("Minor Illusion");
    spells.add("Mirage Arcane");
    spells.add("Mirror Image");
    spells.add("Mislead");
    spells.add("Misty Step");
    spells.add("Modify Memory");
    spells.add("Mold Earth");
    spells.add("Moonbeam");
    spells.add("Mordenkainen's Faithful Hound");
    spells.add("Mordenkainen's Magnificent Mansion");
    spells.add("Mordenkainen's Private Sanctum");
    spells.add("Mordenkainen's Sword");
    spells.add("Move Earth");
    spells.add("Negative Energy Flood");
    spells.add("Nondetection");
    spells.add("Nystul's Magic Aura");
    spells.add("Otiluke's Freezing Sphere");
    spells.add("Otiluke's Resilient Sphere");
    spells.add("Otto's Irresistible Dance");
    spells.add("Pass Without Trace");
    spells.add("Passwall");
    spells.add("Phantasmal Force");
    spells.add("Phantasmal Killer");
    spells.add("Phantom Steed");
    spells.add("Planar Ally");
    spells.add("Planar Binding");
    spells.add("Plane Shift");
    spells.add("Plant Growth");
    spells.add("Poison Spray");
    spells.add("Polymorph");
    spells.add("Power Word Heal");
    spells.add("Power Word Kill");
    spells.add("Power Word Pain");
    spells.add("Power Word Stun");
    spells.add("Prayer of Healing");
    spells.add("Prestidigitation");
    spells.add("Primal Savagery");
    spells.add("Primordial Ward");
    spells.add("Prismatic Spray");
    spells.add("Prismatic Wall");
    spells.add("Produce Flame");
    spells.add("Programmed Illusion");
    spells.add("Project Image");
    spells.add("Protection from Energy");
    spells.add("Protection from Evil and Good");
    spells.add("Protection from Poison");
    spells.add("Psychic Scream");
    spells.add("Purify Food and Drink");
    spells.add("Pyrotechnics");
    spells.add("Raise Dead");
    spells.add("Rary's Telepathic Bond");
    spells.add("Ray of Enfeeblement");
    spells.add("Rat of Frost");
    spells.add("Ray of Sickness");
    spells.add("Regenerate");
    spells.add("Reincarnate");
    spells.add("Remove Curse");
    spells.add("Resistance");
    spells.add("Resurrection");
    spells.add("Reverse Gravity");
    spells.add("Revivify");
    spells.add("Rope Trick");
    spells.add("Sacred Flame");
    spells.add("Sanctuary");
    spells.add("Scatter");
    spells.add("Scorching Ray");
    spells.add("Scrying");
    spells.add("Searing Smite");
    spells.add("See Invisibility");
    spells.add("Seeming");
    spells.add("Sending");
    spells.add("Sequester");
    spells.add("Shadow Blade");
    spells.add("Shadow of Moil");
    spells.add("Shape Water");
    spells.add("Shapechange");
    spells.add("Shatter");
    spells.add("Shield");
    spells.add("Shield of Faith");
    spells.add("Shillelagh");
    spells.add("Shocking Grasp");
    spells.add("Sickening Radiance");
    spells.add("Silence");
    spells.add("Silent Image");
    spells.add("Simulacrum");
    spells.add("Skill Empowerment");
    spells.add("Skywrite");
    spells.add("Sleep");
    spells.add("Sleet Storm");
    spells.add("Slow");
    spells.add("Snare");
    spells.add("Snilloc's Snowball Swarm");
    spells.add("Soul Cage");
    spells.add("Spare the Dying");
    spells.add("Speak with Animals");
    spells.add("Speak with Dead");
    spells.add("Speak with Plants");
    spells.add("Spider Climb");
    spells.add("Spike Growth");
    spells.add("Spirit Guardians");
    spells.add("Spiritual Weapon");
    spells.add("Staggering Smite");
    spells.add("Steel Wind Strike");
    spells.add("Stinking Cloud");
    spells.add("Stone Shape");
    spells.add("Stoneskin");
    spells.add("Storm of Vengeance");
    spells.add("Storm Sphere");
    spells.add("Suggestion");
    spells.add("Summon Greater Demon");
    spells.add("Summon Lesser Demons");
    spells.add("Sunbeam");
    spells.add("Sunburst");
    spells.add("Swift Quiver");
    spells.add("Sword Burst");
    spells.add("Symbol");
    spells.add("Synaptic Static");
    spells.add("Tasha's Hideous Laughter");
    spells.add("Telekinesis");
    spells.add("Telepathy");
    spells.add("Teleport");
    spells.add("Teleportation Circle");
    spells.add("Temple of the Gods");
    spells.add("Tenser's Floating Disk");
    spells.add("Tenser's Transformation");
    spells.add("Thaumaturgy");
    spells.add("Thorn Whip");
    spells.add("Thunder Step");
    spells.add("Thunderclap");
    spells.add("Thunderous Smite");
    spells.add("Thunderwave");
    spells.add("Tidal Wave");
    spells.add("Time Stop");
    spells.add("Tiny Servant");
    spells.add("Toll the Dead");
    spells.add("Tongues");
    spells.add("Transmute Rock");
    spells.add("Transport via Plants");
    spells.add("Tree Stride");
    spells.add("True Polymorph");
    spells.add("True Resurrection");
    spells.add("True Seeing");
    spells.add("True Strike");
    spells.add("Tsunami");
    spells.add("Unseen Servant");
    spells.add("Vampiric Touch");
    spells.add("Vicious Mockery");
    spells.add("Vitriolic Sphere");
    spells.add("Wall of Fire");
    spells.add("Wall of Force");
    spells.add("Wall of Ice");
    spells.add("Wall of Light");
    spells.add("Wall of Sand");
    spells.add("Wall of Stone");
    spells.add("Wall of Thorns");
    spells.add("Wall of Water");
    spells.add("Warding Bond");
    spells.add("Water Breathing");
    spells.add("Water Walk");
    spells.add("Watery Sphere");
    spells.add("Web");
    spells.add("Weird");
    spells.add("Whirlwind");
    spells.add("Wind Walk");
    spells.add("Wind Wall");
    spells.add("Wish");
    spells.add("Witch Bolt");
    spells.add("Word of Radiance");
    spells.add("Word of Recall");
    spells.add("Wrath of Nature");
    spells.add("Wrathful Smite");
    spells.add("Zephyr Strike");
    spells.add("Zone of Truth");


    //Link to spelltable
    adapter = new ArrayAdapter(Spelltable.this, android.R.layout.simple_list_item_1,spells);
    mySpellbook.setAdapter(adapter);

    mySpellbook.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if(position == position){
                setContentView(R.layout.spell0);
            }
        }
    });
}

} 任何帮助都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:0)

有两个可能的答案。

我知道您不想听它-但是在这种情况下,另一个类确实是您最好的朋友,因为您有一个List,可以将其简单地从String类型更改为Spell类型(这将占用您的描述)。但是请记住,这只需要一个类,而每个元素都不需要一个类,因此工作量不大!

示例:

class Spell {

    private String name;
    private String description;

    public Spell(String name, String description) {
        this.name = name;
        this.description = description;
    }

    //add getters

}

用法如下

spells.add(new Spell("Aid", "Your spell bolsters your allies with to..."));

另一种方法是使用枚举(然后您可以使用.values()并抛弃列表)。虽然不一定是最好的方法。我认为最好的解决方案是-不要自己做任何事情!

您现在是否有一个包含此信息的API? http://www.dnd5eapi.co/

为什么不使用端点交换字符串-使用Rest API加载所需的所有信息。

作为 Aid 拼写的示例,您将使用http://dnd5eapi.co/api/spells/?name=Aid查找端点,该端点返回:

"url": "http://www.dnd5eapi.co/api/spells/3"

访问该端点时,您可以获得咒语名称和描述(以及更多)

{
     _id: "5a52bc3a559f00418e532f2f",
     index: 3,
     name: "Aid",
     desc: [
         "Your spell bolsters your allies with toughness and resolve. Choose up to three creatures within range. Each target’s hit point maximum and current hit points increase by 5 for the duration."
     ],
    ...
}