在列表视图中返回除实际标签之外的其他内容

时间:2011-09-07 04:35:28

标签: android sqlite android-listview

如果我有一个用字符串数组填充的listview,请说:

Mazda
Renault
Holden
Audi

当我想点击一个项目,而不是返回字符串“Mazda”时,我宁愿返回一个相关的数字,例如马自达返回0,雷诺返回1等。

这是否可行,我会在查询时看到显着的性能提升 SQLite DB只使用整数而不是字符串?

谢谢, M

2 个答案:

答案 0 :(得分:0)

在你的listview中有适配器是使用的,所以在这种方法中也存在位置变量。如果你在logcat打印它,它将获得你的list-item.you需要的每一个位置轻松处理数组

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

    super.onListItemClick(l, v, position, id);
    Object o = this.getListAdapter().getItem(position);
    String pen = o.toString();
    Toast.makeText(this, "You have chosen the pen: " + " " + pen, Toast.LENGTH_LONG).show();
}

答案 1 :(得分:0)

您可以执行以下操作:

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

  String[] MY_CARS = new STRING[] { Mazda, Renault, Holden, Audi };

  setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, MY_CARS));

  ListView lv = (ListView)findViewById(R.id.MyListView);

  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {

      // When clicked, show a toast with the TextView text
      Toast.makeText(getApplicationContext(), "Item at Position "+pos+" was clicked. This corresponds to "+MY_CARS[pos],
      Toast.LENGTH_SHORT).show();

    }
  });
}

这应返回单击列表中项目的位置,该列表应该是数组的索引。

我不确定您是否会获得数据库性能的显着提升。