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

您可以使用 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 回答
0

在这种情况下,您应该使用 BaseAdapter。看到这个walkthough。 http://anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/

编辑:

您必须实现 BaseAdapter,因为 ArrayAdapter 只能显示一个字符串。

请参阅我的实现,它有一个项目列表。每个项目都包含一个姓名和联系人。

您需要设置此 BaseAdapter 来代替 ArrayAdapter。

BaseAdapter 通过 getView() 方法中的布局膨胀来创建视图。布局有两个TextView。

在该方法中,我们还将名称和联系人设置为两个 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 回答