1

以下のコードからわかるように、項目 (項目 1、項目 2、または項目 3) をクリックすると、TextView に「項目 1」、「項目 2」、または「項目 3」という文字列が表示されます。 .

ただし、アイテムをクリックしたときに TextView に表示させたいのは、名前、連絡先など、アイテムに関するその他の情報です。

どうすればできるのかわかりません。誰でもアドバイスできますか?

public class ListA extends ListActivity {
  private TextView selection;
  private static final String[] items={"Item 1", "Item 2", "Item 3"};

  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_list);
    setListAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1,
                    items));
selection=(TextView)findViewById(R.id.selection);
  }

  @Override
  public void onListItemClick(ListView parent, View v, int position,
                                long id) {
    selection.setText(items[position]);
  }
}
4

3 に答える 3

1

getItemAtPosition(position)選択したアイテムをオブジェクトとして取得するために使用できると思います。次に、このオブジェクトの情報を使用できます。

于 2012-12-01T07:29:08.453 に答える
0

その場合は BaseAdapter を使用する必要があります。このウォークスルーを参照してください。 http://anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/

編集:

ArrayAdapter は文字列を 1 つしか表示できないため、BaseAdapter を実装する必要があります。

アイテムのリストを持つ私の実装を参照してください。各項目には、名前と連絡先が含まれています。

この BaseAdapter を ArrayAdapter の代わりに設定する必要があります。

BaseAdapter は、メソッド getView() でレイアウトからインフレートしてビューを作成します。レイアウトには 2 つの TextView があります。

そのメソッドでは、name と contact も 2 つの TextView に設定します。

    public class Item
{
    private String name;
    private String contact;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getContact() {
        return contact;
    }
    public void setContact(String contact) {
        this.contact = contact;
    }


}

public class Adapter1 extends BaseAdapter
{
    private List<Item> items;
    private LayoutInflator inflator;
    public Adapter1(List<Item> items, LayoutInflator inflator) {
        super();
        this.items = items;
                    this.inflator = inflator;
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Object getItem(int position) {
        return items.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View view;

        if(convertView != null)
            view = convertView;
        else
            view = inflator.inflate(R.layout.item_layout, parent, false);

        Item item = (Item) getItem(position);

        ((TextView) view.findViewById(R.id.textName)).setText(item.getName());
        ((TextView) view.findViewById(R.id.textContact)).setText(item.getContact());

        return view;
    }

}
于 2012-12-01T07:33:14.437 に答える
0

ArrayList を使用して、このコードを試してみることができます。

mList = new ArrayList<String>();
    mList.add("Item 1");
    mList.add("Item 2");
    mList.add("Item 3");
    mList.add("Item 4");
    mList.add("Item 5");

そのためのonItemClickコード:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    selection.setText(mList.get(position));
}
于 2012-12-01T08:39:36.593 に答える