使用TextView显示ListView中项目的其他信息

时间:2012-12-01 07:19:14

标签: android listview textview

从下面的代码中可以看出,当我点击项目(项目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]);
  }
}

3 个答案:

答案 0 :(得分:1)

我认为您可以使用getItemAtPosition(position)将所选项目作为对象。然后你可以使用这个对象的信息。

答案 1 :(得分:0)

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

编辑:

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

请参阅我的实现,其中包含Item列表。每个项目都包含名称和联系人。

您需要设置此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;
    }

}

答案 2 :(得分: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));
}