Как добавить элементы в список и, следовательно, удалить их, используя RecyclerView и кнопку в Android Studio? - PullRequest
0 голосов
/ 01 марта 2020

Я начинающий программист и использую Android Studio для создания списка с помощью RecyclerView.

Я пытаюсь добавить больше элементов в уже существующий список с помощью кнопки.

FloatingActionButton fab = findViewById(R.id.fab);
        fab.setImageResource(R.drawable.plus_icon);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {



                Model m = new Model();
                m.setTitle("News");
                m.setDescription("This is news.");
                m.setImg(R.drawable.plus_icon);

            }
        });

Это код кнопки. В настоящее время при нажатии он ничего не делает.

public ArrayList<Model> getMyList(){

        ArrayList<Model> models = new ArrayList<>();

        Model m = new Model();
        m.setTitle("News");
        m.setDescription("This is news.");
        m.setImg(R.drawable.plus_icon);
        models.add(m);


        return models;

    }

Этот код использует ArrayList для создания списка. Я просто скопировал и вставил часть этого в кнопку, потому что я не знаю, как заставить его добавлять элементы.

РЕДАКТИРОВАТЬ: меня попросили добавить код MyAdpater.

package com.example.evaluacioninterna;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;

public class MyAdapter extends RecyclerView.Adapter<MyHolder> {

    Context c;
    ArrayList<Model> models;

    public MyAdapter(Context c, ArrayList<Model> models) {
        this.c = c;
        this.models = models;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row, null);

        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {

        myHolder.mTitle.setText(models.get(i).getTitle());
        myHolder.mDes.setText(models.get(i).getDescription());
        myHolder.mImaeView.setImageResource(models.get(i).getImg());

    }

    @Override
    public int getItemCount() {
        return models.size();
    }

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Попробуйте это:

public class MainActivity  extends AppCompatActivity {

RecyclerView mRecyclerView;
MyAdapter myAdapter;

private ArrayList<Model> mModelList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    mRecyclerView = findViewById(R.id.recyclerView);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    myAdapter = new MyAdapter(this, getMyList());
    mRecyclerView.setAdapter(myAdapter);

    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setImageResource(R.drawable.plus_icon);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Model m = new Model();
            m.setTitle("News");
            m.setDescription("This is news.");
            m.setImg(R.drawable.plus_icon);
            mModelList.add(m);
            myAdapter.notifyDataSetChanged();

        }
    });
}

public ArrayList<Model> getMyList() {
    mModelList = new ArrayList<Model>();
    Model m = new Model();
    m.setTitle("News");
    m.setDescription("This is news.");
    m.setImg(R.drawable.plus_icon);
    mModelList.add(m);

    return mModelList;

}

}

0 голосов
/ 01 марта 2020

Ваш вопрос не четко объяснить, пожалуйста, отредактируйте его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...