0

わかりましたので、これまでのところ私が持っているものは次のとおりです。

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);
    }
}

私がやろうとしているのは、「アイテム」が押されたときに対応する「エントリ」が AlertDialog に表示されるようにすることです。この問題に関するヘルプは大歓迎です。

ありがとう :)

4

2 に答える 2

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);
    }

それ以外の場合、個人的には、両方のデータセットを処理する 1 つのクラスを作成する方がはるかに簡単だと思います...

public class EntryItem {

     private String name;
     private String description;

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

この方法で管理する方が簡単だと思います..幸運を祈ります!

于 2012-08-14T18:48:08.387 に答える
0

EntryItemコンストラクターを介して送信する値を、その特定のクラスの変数に格納している可能性があります。右?

そうしている場合は、次を使用できます。

adb.setMessage(""+item.getTheValueFromTheVariable());
于 2012-08-14T18:41:37.687 に答える