列出适配器显示文本与已保存文本

时间:2011-10-13 15:26:51

标签: android

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

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

    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"};

1 个答案:

答案 0 :(得分:0)

我认为解决这个问题的最佳方法是使用对象。您可以在GREATESTHITS上为每个字符串创建一个模型。然后,您可以为网址添加另一个属性或任何您想要的额外属性。

在创建之后,您创建并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");