[英]Removing duplicates in a Spinner in java when data comes from mySQL
我正在使用hashsetList為我的微調器創建一個沒有重復的新列表,但是當我在微調器中添加此列表時,java給出了錯誤。 當從mySQL顯示重復項時,該項目運行正常。
這是我創建hashsetList之前的MainActivity.java摘錄。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
// Spinner adapter
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item,typesofjobs));
Collections.sort(typesofjobs);
當我添加以下hashsetList代碼以消除重復項並運行它時,項目崩潰。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
Set<String> hashsetList = new HashSet<String>(typesofjobs);
// Spinner adapter
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item, (List<String>) hashsetList));
Collections.sort(typesofjobs);
我是將hashsetList放在錯誤的位置還是使用不正確? 我只是想用非重復版本替換“ typesofjobs”。 有什么更好的方法可以消除我的微調器重復項?
將HashSet
與列表一起使用以刪除重復項時,您HashSet
正確的軌道上。 但是,當您嘗試將此Set
轉換為List
時,您犯了一個錯誤,它將不起作用。 相反,在下面的代碼中,我將從您的作業列表創建的LinkedHashSet
傳遞給ArrayList
構造函數。 結果List
將刪除所有重復的String
作業值。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
List<String> typesofjobsunique = new ArrayList<>(new LinkedHashSet<>(typesofjobs));
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item, typesofjobsunique));
// not sure if you want to keep original list
Collections.sort(typesofjobs);
這篇出色的SO文章的技巧提示,討論了從Java List
刪除重復項的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.