【问题标题】:How to get Last latest value from RecyclerView如何从 RecyclerView 获取最新的最新值
【发布时间】:2016-09-08 09:21:05
【问题描述】:

我正在制作车库应用程序,就像计算器一样。从EditText 中获取 2 个值并在第三个EditText 中打印。然后它将所有值存储在RecyclerView 中。现在的问题是我正在尝试获取最新的总总价值,即最后一行总价值我已经完成了所有可能的解决方案我仍然没有得到。

这是我在自定义适配器中的代码:

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    Employee employee = bank_details.get(position);


    holder.total.setText(employee.getTotal());
    holder.accept.setText(employee.getAcceptmoney());
    holder.given.setText(employee.getGivemoney());
    holder.note.setText(employee.getNote());
    holder.date.setText(employee.getTime());

    int selectedItem = 0;
    if(selectedItem == position)
        holder.itemView.setSelected(true);


}

@Override
public int getItemCount() {
    return bank_details.size();
}

public void setSelectedItem(int last_pos) {
}


public class MyViewHolder extends RecyclerView.ViewHolder {
    CardView cv;
    TextView total;
    TextView accept;
    TextView given;
    TextView note;
    TextView date;

    Button edit;
    Button delete;

    public MyViewHolder(View itemView) {
        super(itemView);
        cv= (CardView) itemView.findViewById(R.id.cv);
        total = (TextView) itemView.findViewById(R.id.grossIncome);
        accept = (TextView) itemView.findViewById(R.id.acceptmoney);
        given = (TextView) itemView.findViewById(R.id.givenmoney);
        note = (TextView) itemView.findViewById(R.id.note);
        date= (TextView) itemView.findViewById(R.id.date);


    }
}
public Employee getItem(int position) {
    return bank_details.get(position);
}

这里是recyclerview的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recyclerview);

    final RecyclerView rv = (RecyclerView) findViewById(R.id.rv);
    rv.setHasFixedSize(true);

    final ArrayList<Employee> arr = InitializeData();

    final LinearLayoutManager llm = new LinearLayoutManager(this);
    rv.setLayoutManager(llm);
    rv.setHasFixedSize(true);

    cu = new CustomAdapter(arr);
    rv.setAdapter(cu);

    int last_pos = cu.getItemCount() - 1;
    cu.notifyDataSetChanged();
    cu.setSelectedItem(last_pos);
    rv.scrollToPosition(last_pos);
}

public ArrayList<Employee> InitializeData() {
    ArrayList<Employee> arr_emp = new ArrayList<>();
    ArrayList<Employee> arr_emp_2 = new ArrayList<>();



    DAL dal = new DAL(this);
    dal.OpenDB();
    arr_emp = dal.AllSelectQryForTabEmpData();
    dal.CloseDB();
    return arr_emp;



}
public void setSelectedItem(int position)
{
    selectedItem = position;
}

问题是我想要总价值,并且总价值可以用作给予和接受价值,即-Total+receving MoneyTotal-giving Money

【问题讨论】:

    标签: android sqlite android-recyclerview android-cardview


    【解决方案1】:

    您需要相应地更改适配器以添加新的最后一行。 为此,请更改一些方法。

    1) 商品数量必须为 +1

    @Override
    public int getItemCount() {
        return bank_details.size() + 1;
    }
    

    2) 在最后一行显示最后一个值

    向适配器解释要在 recyclerview 的最后一行显示什么。 当然,您必须通过浏览您的 bank_details 变量来编码 computeTotalValues()

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
    
        if (position >= bank_details.size() {
    
            double totalValue = computeTotalValue();
            //TODO update your holder views to show the total value.
    
        } else {
            Employee employee = bank_details.get(position);
    
            holder.total.setText(employee.getTotal());
            holder.accept.setText(employee.getAcceptmoney());
            holder.given.setText(employee.getGivemoney());
            holder.note.setText(employee.getNote());
            holder.date.setText(employee.getTime());
    
            int selectedItem = 0;
            if(selectedItem == position)
                holder.itemView.setSelected(true);
    
        }
    
    }
    

    3) 如果数据发生变化,则刷新最后一行

    如果您在显示回收站视图时更改了bank_details 信息(例如设置一个值,添加一个值),您需要使用notifyItemChanged(int position) 警告适配器必须更新最后一行( See docs)。

    【讨论】:

    • 我得到了所有的东西,但是在 computeTotalValue() 我对 android 有点陌生。
    • 这个方法的内容是纯Java。只需循环进入您的bank_details 即可计算您希望在最后一行显示的总金额。
    猜你喜欢
    • 2022-01-18
    • 2018-05-29
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    相关资源
    最近更新 更多