猿问

已定义方法(Android 接口)但仍未找到?

我遵循Head First的Android开发指南作为参考,并尝试使用cardview实现面条菜肴的recyclerview。

我目前正在按照书中的建议将单击功能作为与适配器分开的接口来实现;虽然我现在没有使用片段。一个问题是我定义的 setListener 方法没有被我的 MainActivity 找到。

错误是“找不到符号方法 setListener()”。所以,我的方法就像未定义一样。您知道如何解决这个问题吗?这是MainActivity的代码

package com.justin.android.foodapp;


import androidx.appcompat.app.A


public class MainActivity extends AppCompatActivity {


    private Noodles[] noodlesDataset = Noodles.noodles;

    private RecyclerView recyclerView;

    private RecyclerView.Adapter mAdapter;

    private RecyclerView.LayoutManager layoutManager;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //Log.i("MainActivity", "Hello World");


        // get the recycler view

        recyclerView = (RecyclerView) findViewById(R.id.noodleRecycler);


        // use a linear layout manager

        layoutManager = new LinearLayoutManager(this);

        recyclerView.setLayoutManager(layoutManager);


        //specify an adapter

        mAdapter = new MyAdapter(noodlesDataset);

        recyclerView.setAdapter(mAdapter);

        LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);

        recyclerView.setLayoutManager(layoutManager);


        mAdapter.setListener(new MyAdapter.Listener(){

            public void onClick(int position) {

                Intent intent = new Intent(MainActivity.this, NoodleDetailActivity.class);

                intent.putExtra(NoodleDetailActivity.EXTRA_NOODLE_ID, position);

                (MainActivity.this).startActivity(intent);

            }

        });


    }

}

这是我的适配器代码,我在其中尝试定义 setListener 方法



慕姐4208626
浏览 83回答 1
1回答

隔江千里

替换这个private RecyclerView.Adapter mAdapter;和public MyAdapter mAdapter; 并删除多余的东西并更新如下   private RecyclerView recyclerView;      public MyAdapter mAdapter;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);            //Log.i("MainActivity", "Hello World");            // get the recycler view            recyclerView = (RecyclerView) findViewById(R.id.noodleRecycler);            //specify an adapter            mAdapter = new MyAdapter(noodlesDataset);  LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);            recyclerView.setAdapter(mAdapter);            recyclerView.setLayoutManager(layoutManager);
随时随地看视频慕课网APP

相关分类

Java
我要回答