我的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;
}
您需要更改构造函数以接受
Context
或Activity
。public ChordsListAdapter(Context context, ArrayList<Accordo> chordsList) {
this.chordsList = chordsList;
}
或者可以删除调用中的第一个参数:
ChordsListAdapter adapter = new ChordsListAdapter(getChords());