我的ChordsListActivity是这样的:

public class ChordsListActivity extends Activity {
private RecyclerView chordsList;
private RecyclerView.LayoutManager listLayoutManager;

private ArrayList<Accordo> getChords() {
    ArrayList<Accordo> chords = new ArrayList<>();

    Accordo a=new Accordo();
    a.setName("Do maggiore");
    a.setNote("Do, Mi, Sol");
    a.setImage(R.drawable.do_maggiore);
    chords.add(a);

    a=new Accordo();
    a.setName("do 5");
    a.setNote("na, na, na");
    a.setImage(R.drawable.do5);
    chords.add(a);

    return chords;
}

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

    chordsList = (RecyclerView) findViewById(R.id.chords_recycler);

    //use a linear layout manager
    listLayoutManager = new LinearLayoutManager(this);
    chordsList.setLayoutManager(listLayoutManager);

     ChordsListAdapter adapter = new ChordsListAdapter(this, getChords());

    /** start SearchActivity when ImageButton is pressed */
    ImageButton cerca = (ImageButton) findViewById(R.id.search);
    cerca.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(), SearchActivity.class);

            ArrayList<Accordo> chords = new ArrayList<Accordo>();
            intent.putExtra("chords", chords);


            startActivity(intent);
        }
    });

}
}

此行有错误:
ChordsListAdapter adapter = new ChordsListAdapter(this, getChords());

这是错误:
错误:(126,38)错误:类chordListAdapter中的构造函数chordListAdapter不能应用于给定类型;
必需:arraylist
找到:chordListActivity,arrayList
原因:实际参数列表和形式参数列表的长度不同
这是我的ChordsListAdapter
public class ChordsListAdapter extends RecyclerView.Adapter<ChordsListAdapter.MyViewHolder> {
private ArrayList<Accordo> chordsList;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView nome, note;
    public ImageView immagine;

    public MyViewHolder(View view) {
        super(view);
        nome = (TextView) view.findViewById(R.id.nome);
        note = (TextView) view.findViewById(R.id.note);
        immagine = (ImageView) view.findViewById(R.id.immagine_accordo);
    }
}

public ChordsListAdapter(ArrayList<Accordo> chordsList) {
    this.chordsList = chordsList;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);

    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position){
    Accordo chord = chordsList.get(position);
    holder.nome.setText(chord.getNome());
    holder.note.setText(chord.getNote());
    holder.immagine.setImageResource(chord.getImage());
}

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

你能帮我弄清楚是什么问题以及如何解决吗?

最佳答案

这条线

ChordsListAdapter adapter = new ChordsListAdapter(this, getChords());

是对ChordsListAdapter的构造函数的调用,在您的ChordsListAdapter.class中如下所示:
public ChordsListAdapter(ArrayList<Accordo> chordsList) {
    this.chordsList = chordsList;
}

您需要更改构造函数以接受ContextActivity
public ChordsListAdapter(Context context, ArrayList<Accordo> chordsList) {
    this.chordsList = chordsList;
}

或者可以删除调用中的第一个参数:
ChordsListAdapter adapter = new ChordsListAdapter(getChords());

09-19 12:02