How to iterate over view elements inside recyclerview?

I have a RecyclerView with the following adapter:

 public class DataTransferMeasureListAdapter extends DataTransferBaseListAdapter<DataTransferMeasureListAdapter.ViewHolder> { private Context context = null; private List<DataTransferListEntry> entries = null; public DataTransferMeasureListAdapter(Context context, List<DataTransferListEntry> entries) { super(context); this.context = context; this.entries = entries; } @Override public DataTransferMeasureListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(context).inflate(R.layout.fragment_datatransfer_measure_list_row, parent, false); return new DataTransferMeasureListAdapter.ViewHolder(this.context, itemView); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { final DataTransferMeasureListEntry entry = (DataTransferMeasureListEntry) entries.get(position); final ViewHolder viewHolder = (ViewHolder) holder; String time = Helper.getDateTimePattern(this.context, entry.getDate()); String value = Helper.getMeasureValue(unit, entry.getValue()); viewHolder.textViewTime.setText(time); viewHolder.textViewValue.setText(value); } @Override public int getItemCount() { return entries.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { private Context context = null; private TextView textViewValue = null; private TextView textViewTime = null; public ViewHolder(Context context, View itemView) { super(itemView); this.context = context; this.textViewValue = (TextView) itemView.findViewById(R.id.datatransfer_measure_list_row_textview_value); this.textViewTime = (TextView) itemView.findViewById(R.id.datatransfer_measure_list_row_textview_time); } } } 

In my ListView :

 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); this.adapter = new DataTransferMeasureListAdapter(this.getActivity(), this.dataTransferMeasureListEntries); this.listRowParent = (RecyclerView) view.findViewById(R.id.datatransfer_measure_list_row_parent); this.listRowParent.setAdapter(this.adapter); this.listRowParent.setLayoutManager(new LinearLayoutManager(this.getActivity())); } 

Now I need the ability to Viewholder over each Viewholder inside my adapter so that I can change the visibility of some view elements. I need to install it outside the adapter.

How can i do this?

+7
android
source share
1 answer

As @pskink wrote in the comment. The fastest and most correct way to achieve this is to change the entiries data so that they contain the values ​​you set for visibilty, and then change them from your fragment and call notifyItemChanged if one data record has changed or notifyItemRangeChanged if you have changed several or notifyDataSetChanged if everything has changed or a sporadic change has occurred.

You do not want the fragment to call adapter methods, you only need to “know” and manipulate the data.

+5
source share

All Articles