2012-11-06 44 views
1

单击时我有一个ListActivity,我得到单击的显示文本。有没有更好的方法,比如使用唯一标识符?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语句来检查点击的内容,那将非常有用!

回答

0

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

0

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

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

+0

这是否有助于反射? –

+0

我在您发布的内容中没有看到任何反映,所以我无法回答。 – toadzky