Ich mache eine Notiz App zu nehmen.
Es gibt eine Schaltfläche, um alle Elemente in RecyclerView zu löschen, und die Sichtbarkeit wird auf "Gone" gesetzt. Aber ich möchte, dass es nur sichtbar ist, wenn es Notizen in der App gibt.
Ich weiß nicht warum mit
if (notesList.size()> 0) { removeAllButton.setVisibility (View.VISIBLE);
funktioniert nicht! Wie kann ich das machen?
Bearbeiten: Hinzugefügt den Adapter-Code.
Hier ist meine Hauptklasse:Wie mache ich eine Schaltfläche sichtbar, wenn RecyclerView Elemente enthält?
public class MainActivity extends AppCompatActivity {
private List<Notes> notesList = new ArrayList<>();
private static final int REQUEST_CODE = 1001;
final NoteAdapter adapter = new NoteAdapter(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RecyclerView recyclerView = findViewById(R.id.rv_recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
Button addNoteButton = findViewById(R.id.button_main_addNote);
final Button removeAllButton = findViewById(R.id.button_main_deleteAll);
addNoteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, NoteEdit.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
removeAllButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.removeAll();
removeAllButton.setVisibility(View.GONE);
}
});
if (adapter.getItemCount()>=1){
removeAllButton.setVisibility(View.VISIBLE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE &&
resultCode == RESULT_OK &&
data != null) {
String noteTitle = data.getStringExtra(NoteEdit.Result_Key_Title);
String noteDescription = data.getStringExtra(NoteEdit.Result_Key_Description);
Notes notes = new Notes();
notes.setNoteTitle(noteTitle);
notes.setNoteDescription(noteDescription);
adapter.addNote(notes);
adapter.getItemCount();
}
}}
Adapter Klasse:
public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.SimpleItemViewHolder> {
private Context context;
private List<Notes> notes = new ArrayList<>();
public NoteAdapter(Context context) {
this.context = context;
}
@Override
public SimpleItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.item_sample, parent, false);
return new SimpleItemViewHolder(view);
}
@Override
public void onBindViewHolder(SimpleItemViewHolder holder, int position) {
holder.bindNote(notes.get(position));
}
@Override
public int getItemCount() {
return notes.size();
}
public void addNote(Notes note) {
notes.add(note);
notifyItemInserted(notes.size() - 1);
}
public void removeAll() {
notes.clear();
notifyDataSetChanged();
}
private TextView titleTextView;
private TextView descriptionTextView;
public class SimpleItemViewHolder extends RecyclerView.ViewHolder {
public SimpleItemViewHolder(View itemView) {
super(itemView);
titleTextView = itemView.findViewById(R.id.tv_itemSample_title);
descriptionTextView = itemView.findViewById(R.id.tv_itemSample_description);
}
public void bindNote(Notes note) {
titleTextView.setText(note.getNoteTitle());
descriptionTextView.setText(note.getNoteDescription());
}
}}
habe ich die gleiche Sache vor hier zu fragen, aber überraschend ist es nicht funktioniert und die Taste egal gegangenes bleibt, wenn es Elemente in der sind App oder nicht! Ich werde die Adaptercodes zur Frage hinzufügen. schau mal, ob da etwas nicht stimmt – Hamed
@Hamed nope, wo du Werte zu 'notesList' hinzufügst. Du hast 'adapter.addNote (Noten);' –
@Hamed 'wenn { // VISIBLE }' –