ListActivity项唯一标识符

时间:2012-11-06 16:29:49

标签: android android-activity

点击后我有一个ListActivity,我得到了点击的显示文字。有没有更好的方法,比如使用唯一标识符?

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="adjustments">
        <item>Item 1</item>
        <item>Item 2</item>
        <item>Item 3</item>
    </string-array>
</resources>



然后我将其作为代码:

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    String[] adjustments = getResources().getStringArray(R.array.adjustments);
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, adjustments));
    getListView().setTextFilterEnabled(true);
}

protected void onListItemClick(ListView l, View v, int position, long id){
    super.onListItemClick(l, v, position, id);
    Intent intent = new Intent();
    Bundle bundle = new Bundle();
    try{
        bundle.putString("adjustment", l.getItemAtPosition(position).toString());
        intent.putExtras(bundle);
        setResult(RESULT_OK, intent);
    }catch(Exception e){
        setResult(RESULT_CANCELED, intent);
    }
    finish();
}

我想做的是给每个项目一个唯一的标识符,而不是获取它的文本来决定下一步该做什么。它可能吗?每个选项都会使用反射单击一次调用相同的方法,所以如果我可以调用方法一次而不是执行100的if / else语句来检查点击的内容会非常有用!

2 个答案:

答案 0 :(得分:0)

您可以使用该职位。这些项目每次都以相同的顺序排列,因此您可以根据传递到onListItemClick的位置参数来决定要执行的操作。

您的另一个选择是定义一个自定义适配器,为每个适配器提供一个唯一的ID,但如果列表没有太大变化,位置也可能正常工作。

答案 1 :(得分:0)

我所做的是使用返回文本使用Reflection调用类。因此,如果返回文本为Adjust RGB,我将删除空格并启动类AdjustRGB并根据实现运行函数。