将arraylist转换为hashSet时遇到了困难。我不知道HashSet为什么我使用ArrayList。我已经读了一些关于它的但没有理解。我在这里试图帮助解决我的问题。
我想要的只是不重复在我的应用程序的ListView中输入的单词。这是我的代码。请忍受它。我在这里也看到了一些问题,但它让我更加困惑。请你好。
P.S. 我的第一次尝试:)
ArrayAdapter<String> adapter;
//onCreate
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
wordList.setAdapter(adapter);
//SEARCH
public void viewWord(View view) {
s1 = search.getText().toString();
s2 = dbHelper.getData(s1);
if (optionTxtView == 0) {
tv2.setText(s2);
optionTxtView = 1;
} else {
if (optionTxtView == 1) {
tv3.setText(s2);
optionTxtView = 1;
}
}
adapter.add(text.getText().toString());
adapter.notifyDataSetChanged();
&#13;
答案 0 :(得分:0)
ListView
根据位置返回数据。 Sets
没有位置的概念;你必须遍历Set
才能找到你想要的元素。
另一方面,Lists
确实有一个位置概念,这就是为什么它们与ListView
和BaseAdapter
类很好地配合。
答案 1 :(得分:0)
将ArrayList元素添加到HashSet(注意:如果元素的顺序很重要,请使用LinkedHashSet):
ArrayList<String> list = new ArrayList<String>();
HashSet<String> set = new HashSet<String>();
list.add("Hello");
list.add("Hello");
list.add("World!");
System.out.println(list); // [Hello, Hello, World!]
set.addAll(list);
System.out.println(set); // [Hello, World!]
使用您的代码,也许您可以尝试类似:
ArrayAdapter<String> adapter;
//onCreate
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
HashSet<String> noDupesSet = new HashSet<String>();
noDupesSet.addAll(wordlist);
wordlist.clear();
wordlist.addAll(noDupesSet);
wordList.setAdapter(adapter);
//SEARCH
public void viewWord(View view) {
s1 = search.getText().toString();
s2 = dbHelper.getData(s1);
if (optionTxtView == 0) {
tv2.setText(s2);
optionTxtView = 1;
} else {
if (optionTxtView == 1) {
tv3.setText(s2);
optionTxtView = 1;
}
}
adapter.add(text.getText().toString());
adapter.notifyDataSetChanged();