繁体   English   中英

单击 onclicklistener 按钮转到回收站视图时,应用程序崩溃 - 不知道出了什么问题

[英]App crashes when button onclicklistener is clicked to go to recycler view - don't know what is wrong

我是 android studio 的新手,我目前正在尝试创建一个应用程序,在切换到新活动后显示旅游景点的回收者视图。

但是,当我尝试从登录页面切换到带有回收器视图的新活动时,应用程序崩溃了,我不知道为什么,任何帮助和建议将不胜感激。 谢谢!

PS:没有错误消息,一切都很好,所以我不确定从哪里开始

主要活动代码

public class MainActivity extends AppCompatActivity {

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

        Button btn = findViewById(R.id.btEnter);
        //Enter into app main function button

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, TopLocationList.class);
                startActivity(intent);
            }
        });

    }

位置活动代码列表

public class TopLocationList extends AppCompatActivity {
    RecyclerView recyclerView;

    String s1[], s2[];
    int images[] = {R.drawable.sydneyoperahouse, R.drawable.bondi, R.drawable.botanicgardens, R.drawable.harbourbridgeclimb,
            R.drawable.rocks, R.drawable.thethreesisters, R.drawable.spicealley, R.drawable.thequay, R.drawable.mrwong,
            R.drawable.thegrounds, R.drawable.manly};

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

        recyclerView = findViewById(R.id.recyclerView);

        s1 = getResources().getStringArray(R.array.top_location_names);
        s2 = getResources().getStringArray(R.array.location_suburb);

        AdapterClass adapterClass = new AdapterClass(this, s1, s2, images);
        recyclerView.setAdapter(adapterClass);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));


    }
} 

适配器类代码

public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder> {
    String data1[], data2[];
    int images[];
    Context context;

    public AdapterClass(Context ct, String s1[], String s2[], int img[]){
        context = ct;
        data1 = s1;
        data2 = s2;
        images = img;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.recyclerviewrows, parent, false);
        return new MyViewHolder(view);

    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.mAttractionSuburb.setText(data1[position]);
        holder.mAttractionName.setText(data2[position]);
        holder.mImage.setImageResource(images[position]);
    }

    @Override
    public int getItemCount() {
        return data1.length;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{
        TextView mAttractionName, mAttractionSuburb;
        ImageView mImage;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            mAttractionName = itemView.findViewById(R.id.tvAttractionName);
            mAttractionSuburb = itemView.findViewById(R.id.tvAttractionSuburb);
            mImage = itemView.findViewById(R.id.ivAttractionImage);
        }
    } 

Strings.xml 代码(我通过这里添加了一个字符串数组)

<string name="app_name">TourismGuide</string>
    <string-array name = "top_location_names">
        <item> Sydney Opera House </item>
        <item> Bondi Beach </item>
        <item> Royal Botanic Garden </item>
        <item> Harbour Bridge </item>
        <item> The Rocks </item>
        <item> Three Sisters Walk </item>
        <item> Taronga Zoo </item>
        <item> Spice Alley </item>
        <item> The Quay </item>
        <item> Mr Wong </item>
        <item> The Grounds of Alexandria </item>
        <item> Manly Beach </item>
    </string-array>
    <string-array name="location_suburb">
        <item> Sydney </item>
        <item> Bondi </item>
        <item> Sydney </item>
        <item> Sydney </item>
        <item> Sydney </item>
        <item> Katoomba </item>
        <item> Mosman </item>
        <item> Chippendale </item>
        <item> Sydney </item>
        <item> Wynyard </item>
        <item> Alexandria </item>
        <item> Manly </item>
    </string-array> 

如果这很长,我真的很抱歉,再次非常感谢任何帮助。 谢谢!

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

AdapterClass adapterClass = new AdapterClass(this, s1, s2, images);
recyclerView.setAdapter(adapterClass);

您需要首先将 Layoutmanager 分配给 RecyclerView,然后将适配器附加到您的 recyclerview。

附注。 通过一些简单的 RecyclerView 教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM