私はこのようなものがあります:私のRecyclerViewを更新するRecyclerView.ViewHolderのRecyclerView.AdapterのArrayListを更新しますか?私のMainActivityで
recyclerAdapter = new RecyclerAdapter(this, arrayList);
recyclerView.setAdapter(recyclerAdapter);
を、私はない:
Item item = new Item();
item.setId(id);
item.setMessage(message);
arrayList.set(position, item);
recyclerAdapter.notifyItemChanged(position);
(あまりにも、MainActivityに)私はすべてのRecyclerViewリスト項目内のボタンを持つようにしたいです現在のエントリを有効または無効にすることができます。したがって、私は現在のトグル状態を取得する必要があります。
私の問題は、どのように私のViewHolder内からMainActivityのRecyclerViewを更新できますか? RecyclerView.ViewHolder:
public class SetViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{//, View.OnLongClickListener{
public ImageView toggle;
public SetViewHolder(View itemView){
super(itemView);
toggle = (ImageView) itemView.findViewById(R.id.img_main_card_toggle);
toggle.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == toggle.getId()) {
int clicked_position = getAdapterPosition();
//TODO update Item of RecyclerView of MainActivity
}
}
マイRecycler.Adapter:
public class RulesAdapter extends RecyclerView.Adapter<SetViewHolder>{
private Activity activity;
List<Item> items = Collections.emptyList();
private OnTapListener onTapListener;
public RulesAdapter(Activity activity, List<Item> items){
this.activity = activity;
this.items = items;
}
@Override
public SetViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rules_list_item,parent,false);
return new SetViewHolder(view);
}
@Override
public void onBindViewHolder(SetViewHolder holder, final int position) {
holder.recevied_message.setText(items.get(position).getReceived_message());
holder.reply_message.setText(items.get(position).getReply_message());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(onTapListener != null){
onTapListener.OnTapView(position);
}
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public void setOnTapListener(OnTapListener onTapListener){
this.onTapListener = onTapListener;
}
}
'ViewHolder 'から' notifyItemChanged 'を呼び出す –
MainActivityのarrayListに項目を追加してnotifyItemChanged()を呼び出すと、それはrecyclerviewに表示されません。アダプタで使用されるarrayListを更新することができます –
しかし、ViewListからArrayListを更新するにはどうすればいいですか?どのように私はそれにアクセスするのですか? – Panther