让我们假设我们将RSS Feed的链接添加到HashMap中,如下所示。
if (currentChild.getNodeName().equalsIgnoreCase("link")) {
//L.m(currentChild.getTextContent());
currentMap.put("link", currentChild.getTextContent());
}
换句话说,我们的HashMap包含一个键/值对,如图所示......
("link",http://........),
("link",http://........),
("link",http://........) and so on....
现在我想用以下方法提取这些链接..
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
}
我想在WebViews中打开链接。我做了类似的事情,但是将标题和链接等数据保存到一个简单的ArrayList中。现在我正在尝试与HashMaps类似的东西,而且我被卡住了。
提前谢谢你。
答案 0 :(得分:1)
您可以使用MultiMap概念的任何实现。例如apache commons-collection或guava或其他实现:
使用番石榴对MultiMap的一些解释:
http://tomjefferys.blogspot.com/2011/09/multimaps-google-guava.html
使用apache commons-collection库对MultiMap进行一些解释:
最后,您可以自己实现MultiMap,如第一个链接中所述。祝你好运。
答案 1 :(得分:1)
由于ListView假定每个项目的序数位置,因此您需要一个具有明确定义顺序的集合才能使其正常工作。
尝试以下内容:
使用包含android.util.Pair的List创建您的链接集合,如下所示:
private List<Pair<String, Uri>> links = new ArrayList<Pair<String, Uri>>();
创建
ArrayAdapter<Pair<String, Uri>>
并使用上述列表
进行初始化然后你的onItemClick实现将如下所示:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
ArrayAdapter<Pair<String, Uri>> adapter = (ArrayAdapter<Pair<String, Uri>>)parent.getAdapter();
Pair<String, Uri> item = adapter.getItem(position);
String linkLabel = item.first;
Uri linkUri = item.second;
}
最后,为避免列表中的重复,您可以使用contains方法:
Pair<String, Uri> linkToAdd = new Pair("Amazon", Uri.parse("http://www.amazon.com"));
if (!links.contains(linkToAdd))
{
links.add(linkToAdd);
}
答案 2 :(得分:0)
我找时间修理它。
static ArrayList<HashMap<String, String>> results;
.
.
.
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> hm = results.get(position);
String link = hm.get("link");
L.m(link);
if (!link.equals("")) {
//do what ever you like to do with link;
Intent browserIntent = new Intent(MainActivity.this, WebActivity.class);
browserIntent.putExtra("url",link);
startActivity(browserIntent);
}
}
我没有使用任何foreach循环作为在onItemClick()方法内重复的键/值对(get(position)。感谢您的帮助。
此致 西奥。