Android: Sets the gravity of the RecyclerView project… here is a solution to the problem.
Android: Sets the gravity of the RecyclerView project
I
have a recyclerView that behaves like a list, when I delete one item, all other items go up and I want them to go down. I’m thinking about setting gravity for the project, or inverting the position in the adapter so that the bottom position is 0.
My adapter (custom):
public class AddEventsAdapter extends HFRecyclerViewAdapter<String, AddEventsAdapter.ViewHolder> {
public AddEventsAdapter(Context context) {
super(context);
}
@Override
public void footerOnVisibleItem() {
}
@Override
public void addData(int position, String item) {
super.addData(position, item);
}
@Override
public ViewHolder onCreateDataItemViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.data_item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindDataItemViewHolder(ViewHolder holder, int position) {
holder.itemTv.setText(getData().get(position));
}
class ViewHolder extends RecyclerView.ViewHolder{
TextView itemTv;
LinearLayout theLayout;
public ViewHolder(View itemView) {
super(itemView);
itemTv = (TextView)itemView.findViewById(R.id.itemTv);
theLayout = (LinearLayout)itemView.findViewById(R.id.layout2);
theLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeData(getAdapterPosition());
}
});
}
}
}
Implementation:
AddEventsAdapter myAdapter = new AddEventsAdapter(this);
assert layout != null;
layout.setAdapter(myAdapter);
layout.setLayoutManager(new LinearLayoutManager(this));
View footerView = LayoutInflater.from(this).inflate(R.layout.footer, layout, false);
myAdapter.setFooterView(footerView);
ArrayList<String> data = new ArrayList<>();
for (int i=0; i<8; i++){
data.add(String.format("Item %d", i));
}
myAdapter.setData(data);
Solution
Resolved by adding this line to the LayoutManager: .setReverseLayout(true);