![](/img/trans.png)
[英]RecyclerView .addTextChangedListener gives multiple positions
[英]Android: invert RecyclerView positions
我正在設置一個像列表一樣的RecyclerView,我想在列表底部有一個按鈕,當點擊時添加更多視圖,我認為更簡單的方法是將位置0作為第一個在在底部,並將位置增加到頂部,因此我可以在單擊位置0中的視圖時添加視圖。 如果對這個問題有更好的方法,請分享。
這是我的適配器:
public class AddEventsAdapter extends RecyclerView.Adapter<AddEventsAdapter.ViewHolder> {
public List<String> items = new ArrayList<>();
public void addItem(String name) {
notifyItemInserted(items.size() - 1);
items.add(name);
}
public void removeItem(int position) {
items.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, items.size());
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.add_event_item, parent, false);
return new ViewHolder(view);
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.setData(position);
holder.eventName.setText(i + "");
if(position == 0)
{
holder.theLayout.setBackgroundColor(Color.parseColor("#7F9099"));
holder.eventName.setText("Add");
}
}
static int i;
class ViewHolder extends RecyclerView.ViewHolder{
public TextView eventName;
public RelativeLayout theLayout;
public ViewHolder(final View itemView) {
super(itemView);
eventName = (TextView)itemView.findViewById(R.id.eventName);
theLayout = (RelativeLayout)itemView.findViewById(R.id.backgroundevent);
theLayout.setId(++i);
}
public void setData(final int position) {
theLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (position == items.size() - 1) {
addItem("");
} else {
removeItem(position);
}
}
});
}
}
}
您可能會注意到一些錯誤,我在過去的10個小時內已經完成了這個錯誤,而且我遇到了邏輯故障
它通過addind這行解決了LayoutManager .setReverseLayout(true);
您可以在列表末尾添加頁腳視圖,然后在其中添加按鈕。 這是在回收站視圖中創建頁腳的鏈接https://github.com/u3breeze/android-RecyclerView-WithHeaderAndFooter 。 您可以以正常方式添加視圖
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.