Как я могу предотвратить добавление дублированных данных в мой ArrayList
класса
Когда я добавлю данные в список массивов, он проверит, есть ли дублировать или нет, если да, данные не будут добавляться в ArrayList
I am using this code to prevent the adding of dublicate elements but it's not working
Код
public class ScrollingActivity extends AppCompatActivity implements AdaptreForRecycler.OnItemClickListener {
private RecyclerView recyclerView;
private AdaptreForRecycler adapter;
private RecyclerView.LayoutManager layoutManager;
private ArrayList<ExampleItem> mExampleList;
private Gson gson;
private String json;
private Type type;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scrolling);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
loadData();
buildRecyclerView();
editText = findViewById(R.id.editText);
fabButoonClick();
}
public void saveData() {
sharedPreferences = getSharedPreferences("SHARED_PREFS", MODE_PRIVATE);
editor = sharedPreferences.edit();
gson = new Gson();
json = gson.toJson(mExampleList);
editor.putString("text", json);
editor.apply();
}
public void loadData() {
sharedPreferences = getSharedPreferences("SHARED_PREFS", MODE_PRIVATE);
gson = new Gson();
json = sharedPreferences.getString("text", null);
type = new TypeToken<ArrayList<ExampleItem>>() {
}.getType();
mExampleList = gson.fromJson(json, type);
if (mExampleList == null) {
mExampleList = new ArrayList<>();
}
}
public void insertItem(String text) {
ExampleItem ex = new ExampleItem(text);
if ( mExampleList.contains(ex)) {
Toast.makeText(this, "Already Exists", Toast.LENGTH_SHORT).show();
} else {
mExampleList.add(ex);
}
adapter.notifyDataSetChanged();
}
ExampleItem deletedIndex = null;
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
final int position = viewHolder.getAdapterPosition();
String name = mExampleList.get(position).getText1();
deletedIndex = (mExampleList.get(position));
mExampleList.remove(position);
sharedPreferences = getSharedPreferences("SHARED_PREFS", MODE_PRIVATE);
editor = sharedPreferences.edit();
editor.remove("text");
saveData();
editor.apply();
adapter.notifyItemRemoved(position);
Snackbar.make(recyclerView, name + " Deleted", Snackbar.LENGTH_LONG)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View v) {
mExampleList.add(position, deletedIndex);
adapter.notifyItemInserted(position);
saveData();
}
}).show();
}
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
new RecyclerViewSwipeDecorator.Builder(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
.addSwipeLeftBackgroundColor(ContextCompat.getColor(ScrollingActivity.this, R.color.my_background))
.addSwipeLeftActionIcon(R.drawable.ic_delete_black_24dp)
.create()
.decorate();
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
};
private void buildRecyclerView() {
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(ScrollingActivity.this);
adapter = new AdaptreForRecycler(this, mExampleList);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
public void fabButoonClick() {
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder b = new AlertDialog.Builder(ScrollingActivity.this);
View mview = getLayoutInflater().inflate(R.layout.dialogbox_frontpage, null);
final EditText editText = mview.findViewById(R.id.editText);
b.setView(mview);
b.setTitle("Add subject name");
b.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
b.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String text = editText.getText().toString();
if (text.isEmpty()) {
Toast.makeText(ScrollingActivity.this, "Please add subject name", Toast.LENGTH_SHORT).show();
} else {
insertItem(text);
saveData();
}
}
});
b.setCancelable(false);
b.show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_scrolling, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemClick(int position) {
Intent i = new Intent(ScrollingActivity.this, StudentListActivity.class);
i.putExtra("Subject Name", mExampleList.get(position).getText1());
startActivity(i);
}
}