0

Ich habe AutoCmpleteTextView und RecyclerView in meiner App. Wenn ich ein Element aus der AutCompleteTextView gesucht und ausgewählt habe, wird es zur RecyclerView hinzugefügt. Es hat sehr gut funktioniert. Aber ich möchte wissen, ob das ausgewählte Element bereits in der RecyclerView vorhanden ist. Vermeiden Sie doppelte Artikel.Überprüfen Sie, ob das Element, das aus der AutoCompleteTextView ausgewählt wurde, bereits in der RecyclerView vorhanden ist

Dies ist mein Code.

final AutoCompleteTextView acTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView); 

     adapter = new MaterialSuggestionAdapter(getApplicationContext()); 
     acTextView.setAdapter(adapter); 
     acTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Product result = adapter.getItem(position); 
       String newName = result.getMatName().toString(); 
       String newQty = String.valueOf(result.getMatQuantity()); 
       String newPCode = result.getMatNo().toString(); 
       String newPlant = result.getMatPlant().toString(); 

       if (!newName.equals("")) { 
        if (myRecyclerViewAdapter.getItemCount() > 0) { 
         if (newName != myRecyclerViewAdapter.getItemName(position).toString()) { 
          myRecyclerViewAdapter.add(1, newName, newQty, newPCode, newPlant); 
         } else { 
          Toast.makeText(getApplicationContext(), "Product Already in the List", Toast.LENGTH_SHORT).show(); 
         } 
        } else { 
         myRecyclerViewAdapter.add(0, newName, newQty, newPCode, newPlant); 
         } 
       } else { 
        Toast.makeText(getApplicationContext(), "Invalied Item!", Toast.LENGTH_SHORT).show(); 
       } 
       acTextView.setText(""); 
      } 
     }); 


    } 

Wenn ich Position zu in dieser Zeile geändert if (newName! = MyRecyclerViewAdapter.getItemName (Position) .toString())

LogCat geben Sie mir diesen Fehler

04-06 16:08:01.681 25361-25361/com.ceatkelanisrilanka.dushanmadushanka.ceat E/AndroidRuntime: FATAL EXCEPTION: main 
                           Process: com.ceatkelanisrilanka.dushanmadushanka.ceat, PID: 25361 
                           java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 
                            at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
                            at java.util.ArrayList.get(ArrayList.java:308) 
                            at com.ceatkelanisrilanka.dushanmadushanka.ceat.adapters.SelectItemAdapter.getItemName(SelectItemAdapter.java:54) 
                            at com.ceatkelanisrilanka.dushanmadushanka.ceat.SelectItem$2.onItemClick(SelectItem.java:166) 
                            at android.widget.AutoCompleteTextView.performCompletion(AutoCompleteTextView.java:905) 
                            at android.widget.AutoCompleteTextView.access$500(AutoCompleteTextView.java:90) 
                            at android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick(AutoCompleteTextView.java:1201) 
                            at android.widget.AdapterView.performItemClick(AdapterView.java:305) 
                            at android.widget.AbsListView.performItemClick(AbsListView.java:1146) 
                            at android.widget.AbsListView$PerformClick.run(AbsListView.java:3053) 
                            at android.widget.AbsListView$3.run(AbsListView.java:3860) 
                            at android.os.Handler.handleCallback(Handler.java:739) 
                            at android.os.Handler.dispatchMessage(Handler.java:95) 
                            at android.os.Looper.loop(Looper.java:135) 
                            at android.app.ActivityThread.main(ActivityThread.java:5254) 
                            at java.lang.reflect.Method.invoke(Native Method) 
                            at java.lang.reflect.Method.invoke(Method.java:372) 
                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

Sie haben nur ein Element in recylerview, das ist, warum Sie diesen Fehler bekommen. –

+0

Ok.thankz.aber wie finden Sie den Artikel ist bereits in der Recyclerview oder nicht? Geben Sie einen Toast, der Artikel ist bereits in der Liste –

+0

Haben Sie meine Antwort überprüft? –

Antwort

0

Je nach den Kommentaren, wenn Sie überprüfen möchten, ob der Artikel in RecyclerView der n versuchen, wie dies zu tun:

if (myRecyclerViewAdapter.getItemCount() > 0) { 
    if (!isPresent(newName, myRecyclerViewAdapter)) { 
     myRecyclerViewAdapter.add(1, newName, newQty, newPCode, newPlant); 
    } else { 
     Toast.makeText(getApplicationContext(), "Product Already in the List", Toast.LENGTH_SHORT).show(); 
    } 
} 

Und isPresent kann wie folgt definiert werden:

private boolean isPresent(String name, MyRecyclerViewAdapter myRecyclerViewAdapter){ 
    boolean isPresent = false; 
    for(int i = 0; i < myRecyclerViewAdapter.getItemCount(); i++){ 
      if(name.equalsIgnoreCase(myRecyclerViewAdapter.getItemName(i).toString())){ 
       isPresent = true; 
       break; 
      } 
    } 
    return isPresent; 
} 
Verwandte Themen