Java I';我总是出错。不兼容类型:ArrayList<;学生详情>;无法转换为ArrayList<;AndroidTargets>;

Java I';我总是出错。不兼容类型:ArrayList<;学生详情>;无法转换为ArrayList<;AndroidTargets>;,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我们的想法是,当Firebase在RecyclerView中填充时,使其列表可点击,但我得到以下错误: 错误:不兼容的类型:ArrayList无法转换为ArrayList“ 在包含“adapter=new TargetDataAdapter(列表,此项)”的行中;“在showstudentdetails活动中 这是showstudentdetails代码: 这是适配器 您收到该错误是因为您正在传入以下代码行: adapter = new TargetDataAdapter(list,this);

我们的想法是,当Firebase在
RecyclerView
中填充时,使其列表可点击,但我得到以下错误:

错误:不兼容的类型:ArrayList无法转换为ArrayList“

在包含“adapter=new TargetDataAdapter(列表,此项)”的行中;“在showstudentdetails活动中

这是
showstudentdetails
代码:

这是适配器


您收到该错误是因为您正在传入以下代码行:

adapter = new TargetDataAdapter(list,this);
TargetDataAdapter
构造函数a
list
声明为
ArrayList
类型,并且在适配器中,该列表的类型为
ArrayList
,因此出现错误。要解决此问题,应传递一个相同数据类型的列表,更准确地说,类型为
ArrayList
。因此,列表中的所有对象必须是
AndroidTargets
类型,而不是
StudentDetails
类型


如果要显示“代码>学生详细信息< /代码>对象的列表,那么您需要创建另一个适配器,该适配器接受类型<代码>学生详细信息< /代码> .< /p>嗨,菲利普!您尝试过我的解决方案吗?如果您认为我的答案对您有帮助,请考虑通过单击复选标记接受它。✔️) 在投票箭头的左边。应该换成绿色。我真的很感激。谢谢!

package com.example.helpresponse;

public class AndroidTargets {
    public String FIELD1;
    public Long FIELD2;
    public String FIELD3;
}
package com.example.helpresponse;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Locale;

public class TargetDataAdapter extends RecyclerView.Adapter<TargetDataAdapter.TargetViewHolder> {

    private ArrayList<AndroidTargets> targetsArrayList;
    private HandleClick mHandleClick;

    /*Note that the constructor now take two params which helps us get ride of setmHandleClick() method.*/
    public TargetDataAdapter(ArrayList<AndroidTargets> mTargetData, HandleClick handleClick) {
        targetsArrayList = mTargetData;
        mHandleClick = handleClick;
    }

    @NonNull
    @Override
    public TargetViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.target_row, viewGroup, false);
        return new TargetViewHolder(v);
    }

    /* There is an interesting way to make below code neater by abstracting it back to the Activity incharge, let me know if you want that...priority now is to focus on fixing your issue. */
    @Override
    public void onBindViewHolder(@NonNull TargetViewHolder viewHolder, int i) {
        viewHolder.androidTargetName.setText(targetsArrayList.get(i).FIELD1);
        viewHolder.androidTargetNumber.setText(String.format(Locale.getDefault(), "API Level: %d", targetsArrayList.get(i).FIELD2));
        viewHolder.androidTargetShortName.setText(targetsArrayList.get(i).FIELD3);
        viewHolder.myClickableView.setClickable(true);

        viewHolder.myClickableView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mHandleClick.onItemClick(i);
            }
        });
    }

    @Override
    public int getItemCount() {
        if (targetsArrayList == null)
            return 0;
        return targetsArrayList.size();
    }

    public static class TargetViewHolder extends RecyclerView.ViewHolder {
        protected TextView androidTargetName;
        protected TextView androidTargetNumber;
        protected TextView androidTargetShortName;
        protected LinearLayout myClickableView;


        public TargetViewHolder(@NonNull View itemView) {

            super(itemView);
            myClickableView = itemView.findViewById(R.id.linearLayout);
            androidTargetShortName = itemView.findViewById(R.id.textView2);
            androidTargetName = itemView.findViewById(R.id.textView3);
            androidTargetNumber = itemView.findViewById(R.id.textView4);

        }

        public interface IHomeSelector {
            void onCategorySelected(int postion);
        }
    }
}
package com.example.helpresponse;

/**
 * Created by Juned on 7/25/2017.
 */

public class StudentDetails {


    private String name;
   public String message;
    public String latitude;
    public String longitude;

    public StudentDetails() {
        // This is default constructor.
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getStudentName() {

        return name;
    }

    public void setStudentName(String name) {

        this.name = name;
    }

}
adapter = new TargetDataAdapter(list,this);