Активность интерфейса и адаптер - PullRequest
0 голосов
/ 03 марта 2020

Я хочу отправить 0/1 моему адаптеру из моей деятельности. Это мой код:

OnActivityButtonClickedListener:

public interface OnActivityButtonClickedListener {
    public void OnActivityButtonClicked(int id);
}

Основная активность:

public class MainActivity extends AppCompatActivity{

    private TabLayout mainTabLayout;
    private ViewPager mainViewPager;
    private OnActivityButtonClickedListener mListener = sDummyCallbacks;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mainTabLayout = findViewById(R.id.MainTabLayout);
        mainViewPager = findViewById(R.id.MainViewPager);
        MainViewPagerAdapter adapter = new MainViewPagerAdapter(this, getSupportFragmentManager());
        mainViewPager.setAdapter(adapter);

        MainActionModeSelectAll = findViewById(R.id.MainActionModeSelectAll);
        MainActionModeCancel = findViewById(R.id.MainActionModeCancel);

        MainActionModeSelectAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mListener.OnActivityButtonClicked(0);
                Toast.makeText(getBaseContext(), "mListener got 0", Toast.LENGTH_SHORT).show();
            }
        });

        MainActionModeCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mListener.OnActivityButtonClicked(1);
                Toast.makeText(getBaseContext(), "mListener got 1", Toast.LENGTH_SHORT).show();
            }
        });
    }

    private static OnActivityButtonClickedListener sDummyCallbacks = new OnActivityButtonClickedListener() {
        @Override
        public void OnActivityButtonClicked(int id) {
        }
    };

}

Адаптер:

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> implements OnActivityButtonClickedListener {
    @Override
    public void OnActivityButtonClicked(int id) {
        switch (id) {
            case 0:
                Toast.makeText(mContext, "0" ,Toast.LENGTH_LONG).show();
                //do something
                break;
            case 1:
                Toast.makeText(mContext, "1" ,Toast.LENGTH_LONG).show();
                //do something else
                break;
        }
    }
}

Адаптер находится внутри фрагмента внутренняя деятельность. Я могу видеть тосты на активности, но тосты на адаптере не отображаются. есть идеи в чем проблема?

1 Ответ

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

Человек! вам нужно проверить эту ссылку

https://developer.android.com/training/basics/fragments/communicating#DefineInterface

Определите интерфейс во фрагменте, в котором находится ваш адаптер, после чего фрагмент отправит данные из действия в адаптер. для тебя.

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