我有我的ChordsListActivity
,看起來像這樣:的Android - ArrayList和RecycleView.Adapter
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());
這是錯誤:
Error:(126, 38) error: constructor ChordsListAdapter in class ChordsListAdapter cannot be applied to given types; required: ArrayList found: ChordsListActivity,ArrayList reason: actual and formal argument lists differ in length
這是我的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();
}
}
你能幫我弄清楚問題是什麼以及如何解決它?
你可以發佈getChords()方法的代碼 –
@DeepanshuGandhi已經存在,它的方法返回你正在傳遞的ChordsListActivity – Daniele
中的ArrayList(this,getChords())兩個參數,並且你有1個參數的構造函數 –