Привет, я уже просмотрел несколько постов по этому поводу и перепробовал все, что люди отвечали, но мне не повезло.
То, что я пытаюсь сделать, - это то, что пользователь касается плавающей кнопки и переходит к другому виду деятельности, где пользователь должен ввести имя и количество посещений, чтобы добавить другой вид карты с этой информацией.,Я перепробовал все функции notifydatasetchanged (), notifyitemsinserted (), но мне не повезло.
Что я сделал, так это:
private RecyclerView recycler;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager lManager;
List<Anime> items = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Inicializar Animes
items.add(new Anime(R.drawable.angel, "Angel Beats", 230));
items.add(new Anime(R.drawable.death, "Death Note", 456));
items.add(new Anime(R.drawable.fate, "Fate Stay Night", 342));
items.add(new Anime(R.drawable.nhk, "Welcome to the NHK", 645));
items.add(new Anime(R.drawable.suzumiya, "Suzumiya Haruhi", 459));
// Obtener el Recycler
recycler = (RecyclerView) findViewById(R.id.reciclador);
recycler.setHasFixedSize(true);
// Usar un administrador para LinearLayout
lManager = new LinearLayoutManager(this);
recycler.setLayoutManager(lManager);
// Crear un nuevo adaptador
adapter = new AnimeAdapter(items);
recycler.setAdapter(adapter);
}
public void agregar (View view){
Intent intent = new Intent(this ,AgregarActivity.class);
startActivity(intent);
}
public void agregarItem(Anime anime){
items.add(anime);
adapter.notifyItemInserted(items.size() -1);
}
Мой адаптер
public class AnimeAdapter extends RecyclerView.Adapter<AnimeAdapter.AnimeViewHolder> {
private List<Anime> items;
public static class AnimeViewHolder extends RecyclerView.ViewHolder {
// Campos respectivos de un item
public ImageView imagen;
public TextView nombre;
public TextView visitas;
public AnimeViewHolder(View v) {
super(v);
imagen = (ImageView) v.findViewById(R.id.imagen);
nombre = (TextView) v.findViewById(R.id.nombre);
visitas = (TextView) v.findViewById(R.id.visitas);
((ImageButton) v.findViewById(R.id.detalle)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent (v.getContext(), AgregarActivity.class);
intent.putExtra("nom", nombre.getText().toString());
v.getContext().startActivity(intent);
}
});
}
}
public AnimeAdapter(List<Anime> items) {
this.items = items;
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public AnimeViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.anime_card, viewGroup, false);
return new AnimeViewHolder(v);
}
@Override
public void onBindViewHolder(AnimeViewHolder viewHolder, int i) {
viewHolder.imagen.setImageResource(items.get(i).getImagen());
viewHolder.nombre.setText(items.get(i).getNombre());
viewHolder.visitas.setText("Visitas:" + items.get(i).getVisitas());
}
public void agregarItem(Anime anim){
items.add(anim);
notifyDataSetChanged();
}
и другие мои действия
MainActivity main = new MainActivity();
public void agregar(View view) {
EditText nom = ((EditText) findViewById(R.id.etNombre));
EditText vis = ((EditText) findViewById(R.id.etVisitas));
Anime anime = new Anime(R.drawable.house, nom.getText().toString(), Integer.parseInt(vis.getText().toString()));
MainActivity activity = new MainActivity();
activity.agregarItem(anime);
}
РЕШЕНО:
Вместо того чтобы использовать startActivity в mainActivity, я использовал startActivityForResult, а затем возвращал данные и обрабатывал их с помощью метода переопределения onActivityResult