如何按ArrayList并显示包含来自另一个ArrayList的信息的AlertDialog?

时间:2012-08-14 18:36:47

标签: android oop arraylist android-alertdialog

好的,这就是我到目前为止所得到的:

public class Perks extends ListActivity {

 ArrayList<Item> items = new ArrayList<Item>();
 ArrayList<Item> entry = new ArrayList<Item>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        items.add(new SectionItem("Tier 1"));
        items.add(new EntryItem("Flak Jacket"));
        items.add(new EntryItem("Ghost"));
        items.add(new EntryItem("Blind Eye"));
        items.add(new EntryItem("Hardline"));
        items.add(new EntryItem("Lightweight"));

        items.add(new SectionItem("Tier 2"));
        items.add(new EntryItem("Hard Wired"));
        items.add(new EntryItem("Scavenger"));
        items.add(new EntryItem("Cold Blooded"));
        items.add(new EntryItem("Toughness"));
        items.add(new EntryItem("Fast Hands"));

        items.add(new SectionItem("Tier 3"));
        items.add(new EntryItem("Engineer"));
        items.add(new EntryItem("Dead Silence"));
        items.add(new EntryItem("Extreme Conditioning"));
        items.add(new EntryItem("Tactical Mask"));
        items.add(new EntryItem("Awareness"));
        items.add(new EntryItem("Dexterity"));

        EntryAdapter adapter = new EntryAdapter(this, items);

        entry.add(new SectionItem("Tier 1"));
        entry.add(new EntryItem("Take less explosive damage."));
        entry.add(new EntryItem("Cannot be detected by enemy UAV while moving."));
        entry.add(new EntryItem("Unaffected by AI-controlled perks."));
        entry.add(new EntryItem("Receive bonus score points."));
        entry.add(new EntryItem("Move faster, take no damage from falling."));

        entry.add(new SectionItem("Tier 2"));
        entry.add(new EntryItem("Immune to counter-UAV and enemy EMPs."));
        entry.add(new EntryItem("Replenish ammo and grenades from fallen enemies."));
        entry.add(new EntryItem("Resistence to targeting systems including Dual Band, Target Finder," +
                "Sensor Grenades and player-controlled aircraft."));
        entry.add(new EntryItem("Flinch less when shot."));
        entry.add(new EntryItem("Swap grenades faster, use grenades and equipment faster, and safely throw" +
                "back frag grenades."));

        entry.add(new SectionItem("Tier 3"));
        entry.add(new EntryItem("Show enemy equipment, delay explosives, and re-roll and booby trap care" +
                "packages."));
        entry.add(new EntryItem("Move silently."));
        entry.add(new EntryItem("Sprint for a longer duration."));
        entry.add(new EntryItem("Reduce the effect of flash, concussiona and shock charges."));
        entry.add(new EntryItem("Enemy movements are easier to hear."));
        entry.add(new EntryItem("Climb ladders and mantle over objects faster, recover from melee faster and" +
                "aim faster after sprinting."));


        setListAdapter(adapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

        if(!items.get(position).isSection()){

            EntryItem item = (EntryItem)items.get(position);

            //Toast.makeText(this, "You clicked " + item.title , Toast.LENGTH_SHORT).show();

                  AlertDialog.Builder adb=new AlertDialog.Builder(Perks.this);
                  adb.setTitle(item.title);
                  adb.setMessage();
                  adb.setPositiveButton("Ok", null);
                  adb.show();
              }


        super.onListItemClick(l, v, position, id);
    }
}

我要做的就是让它按下“item”时,它会在AlertDialog中显示相应的“条目”。任何有关此事的帮助将不胜感激。

谢谢:)

2 个答案:

答案 0 :(得分:2)

好吧,看起来您当前的数组列表对应的索引具有相同的值...换句话说..如果用户在项目列表中选择第2项,则您希望在条目列表中显示第2项。

 @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

        if(!items.get(position).isSection()){

            EntryItem item = (EntryItem)items.get(position);
            EntryItem discriptor = (EntryItem) entry.get(position);

                  AlertDialog.Builder adb=new AlertDialog.Builder(Perks.this);
                  adb.setTitle(item.title);
                  adb.setMessage(discriptor.getTitle()); //get the value of this element.
                  adb.setPositiveButton("Ok", null);
                  adb.show();
              }


        super.onListItemClick(l, v, position, id);
    }

否则,我个人认为创建一个类来处理这两组数据要容易得多......例如。

public class EntryItem {

     private String name;
     private String description;

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

我认为以这种方式管理会更容易。祝你好运!

答案 1 :(得分:0)

您可能正在将通过EntryItem构造函数发送的值存储到该特定类中的某个变量中。正确?

如果您这样做,可以使用:

adb.setMessage(""+item.getTheValueFromTheVariable());