2011-10-13 26 views
0

我现在拥有的是一个列表视图,其中包含3个项目:观众,选择主题和采访策略。我希望能够将这些项目保存为字符串,以在路径中打开带有关联项目名称的URL,但是当路径的项目名称与我在列表视图项目中使用的项目名称不同时,问题就出现了;我们有Audience,Choosing_topics和Interviewing作为他们的名字。我将如何去处理这个冲突的名称而不更改url或listViewItem的名称?我是否应该引用另一个字符串数组来比较第一个字符串数组的值以检索新数组中的关联项?这里是我现在所拥有的:列表适配器显示文本与保存文本

setListAdapter(new ArrayAdapter(this,R.layout.list_item,GREATESTHITS)); ListView lv = getListView(); lv.setTextFilterEnabled(true);

lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
      String text = (String) ((TextView)view).getText(); 
      ((GlobalVariables)getApplication()).setGlobalVariable(text); 
    String str = DownloadText("http://www.jmu.edu/uwc/" + text + ".html"); 



static final String[] GREATESTHITS = new String[] {"Audience", "Choosing topics", "Interviewing Strategies"}; 

回答

0

我想说,处理这个问题的最好方法是使用对象。您可以为您的GREATESTHITS上的每个字符串创建一个模型。然后你可以添加另一个属性的URL或任何额外的你想要的。

创建完成后,创建并创建ArrayAdapter<YourTypeHere>,然后在ListView上设置刚才创建的适配器。

之后的ItemClickListener您可以使用此:

YourTypeHere item = (YourTypeHere) parent.getItemAtPosition(position); 

你有阵列上的对象,你可以访问您为该对象设置的所有属性。

这似乎有点矫枉过正只有3个项目,但它是正确的路要走。

在一个更简单的方法,你可以设置一个HashMap<String, String> urlNames,为每个文本和它的相对url添加一个散列。之后,听众可以做

String text = (String) ((TextView)view).getText(); 
     ((GlobalVariables)getApplication()).setGlobalVariable(text); 
String str = DownloadText("http://www.jmu.edu/uwc/" + urlNames.get(text) + ".html");