ArrayList<CustomClass>
の要素を一覧表示できるActivity
を追加する必要があり、リストを表示するための新しいより良い方法-RecyclerView
を確認しました。
私の質問は、これをアプリに実装する方法です。 Adapter
を使用する必要があることがわかりましたが、プロセス全体を正しく実装する方法がよくわかりません。
あなたが疑問に思っているなら、私は this 私が読んでいるドキュメントの例を参照しています。
編集:
コードを更新した後、シンボルsetOnEntryClickListener
を解決できないと表示されます。
public class voting extends Activity {
RecyclerView myList;
private ArrayList<Player> players; // Players
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voting);
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
players = (ArrayList<Player>)bundle.getSerializable("PLAYERS");
myList = (RecyclerView) findViewById(R.id.charactersList);
myList.setLayoutManager(new LinearLayoutManager(this));
CoursesAdapter adapter = new CoursesAdapter(players);
myList.setAdapter(adapter);
}
// OR RecyclerView with a click listener
CoursesAdapter clickAdapter = new CoursesAdapter(players);
clickAdapter.setOnEntryClickListener(new CoursesAdapter.OnEntryClickListener() {
@Override
public void onEntryClick(View view, int position) {
// stuff that will happen when a list item is clicked
}
});
recyclerView.setAdapter(clickAdapter);
}
そのため、interface
を間違った場所に(おそらく)配置したと思っていました。実際、Adapterクラスの最後に、onAttachedToRecyclerView()
の直後に配置しました。方法:
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
private OnEntryClickListener mOnEntryClickListener;
public interface OnEntryClickListener {
void onEntryClick(View view, int position);
}
public void setOnEntryClickListener(OnEntryClickListener onEntryClickListener) {
mOnEntryClickListener = onEntryClickListener;
}
}
これが実際の例です。あなたの役に立つことを願っています:
public class BankListAdapter extends RecyclerView.Adapter<BankListAdapter.BankListViewHolder> {
ArrayList<BankListModel> bankListModels;
FragmentActivity activity;
View selectBank;
public BankListAdapter(ArrayList<BankListModel> bankListModels, FragmentActivity activity) {
this.bankListModels=bankListModels;
this.activity=activity;
}
@Override
public BankListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View bankListLayout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_bank_list, null);
BankListViewHolder bankListViewHolder = new BankListViewHolder(bankListLayout);
return bankListViewHolder;
}
@Override
public void onBindViewHolder(BankListViewHolder holder, int position) {
holder.bankName.setText(bankListModels.get(position).getBankName());
}
@Override
public int getItemCount() {
return bankListModels.size();
}
public class BankListViewHolder extends RecyclerView.ViewHolder {
TextView bankName;
public BankListViewHolder(View itemView) {
super(itemView);
bankName = (TextView) itemView.findViewById(R.id.tv_bankName);
selectBank = itemView.findViewById(R.id.cv_selectBank);
}
}
}