[英]Android RecyclerView - Calculate items
我正在开发一个Android项目,并创建了RecyclerView
- CardView
。
该应用程序将如下图所示。
该应用程序正在运行,但是在输入一些数据后无法计算一些数字。
我需要:
TextView
即根据“勇气合计”。 我该怎么做?
代码在这里:MainActivity.java
package com.example.rooseveltjunior.gastosrestaurante;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recList = (RecyclerView) findViewById(R.id.listaGastos);
recList.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recList.setLayoutManager(llm);
GastosAdaptador ga = new GastosAdaptador(creatList(3));
recList.setAdapter(ga);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private List<GastosInfo> creatList(int size) {
List<GastosInfo> result = new ArrayList<GastosInfo>();
for (int i = 1; i < size; i++) {
GastosInfo ci = new GastosInfo();
ci.descricao = GastosInfo.DESCRICAO_PREFIX;
ci.quantidade = GastosInfo.QUANTIDADE_PREFIX;
ci.valor_unitario = GastosInfo.VALOR_UNITARIO_PREFIX;
ci.valor_total = GastosInfo.VALOR_TOTAL_PREFIX;
ci.qnt = GastosInfo.Qnt_Prefix;
ci.val_unit = GastosInfo.Val_Unit_Prefix;
ci.val_tot = GastosInfo.Qnt_Prefix + GastosInfo.Val_Unit_Prefix;
result.add(ci);
}
return result;
}
}
数据
package com.example.rooseveltjunior.gastosrestaurante;
/**
* Created by Roosevelt.junior on 18/11/2015.
*/
class GastosInfo {
String descricao;
String quantidade;
String valor_unitario;
String valor_total;
int qnt;
int val_unit;
int val_tot;
static final String DESCRICAO_PREFIX = "Item ";
static final String QUANTIDADE_PREFIX = "Quantidade: ";
static final String VALOR_UNITARIO_PREFIX = "Valor Unitário: ";
static final String VALOR_TOTAL_PREFIX = "Valor Total";
static final int Qnt_Prefix = 0;
static final int Val_Unit_Prefix = 0;
}
适配器
package com.example.rooseveltjunior.gastosrestaurante;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import java.util.List;
/**
* Created by Roosevelt.junior on 18/11/2015.
*/
public class GastosAdaptador extends RecyclerView.Adapter<GastosAdaptador.GastosViewHolder> {
private List<GastosInfo> gastosLista;
public GastosAdaptador(List<GastosInfo> gastosLista){
this.gastosLista = gastosLista;
}
@Override
public GastosViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.card_gastos,viewGroup,false);
return new GastosViewHolder(itemView);
}
@Override
public void onBindViewHolder(GastosViewHolder gastosViewHolder, int i) {
GastosInfo ci = gastosLista.get(i);
gastosViewHolder.vDescricao.setText(ci.descricao);
gastosViewHolder.vQuantidade.setText(ci.quantidade);
gastosViewHolder.vValorUnitario.setText(ci.valor_unitario);
gastosViewHolder.vValorTotal.setText(ci.valor_total);
}
@Override
public int getItemCount() {
return gastosLista.size();
}
public static class GastosViewHolder extends RecyclerView.ViewHolder {
TextView vDescricao;
TextView vQuantidade;
TextView vValorUnitario;
TextView vValorTotal;
EditText vQnt;
EditText vValUnit;
TextView vValTot;
public GastosViewHolder (View v){
super(v);
vDescricao = (TextView) v.findViewById(R.id.txtDescricao);
vQuantidade = (TextView) v.findViewById(R.id.txtQuantidade);
vValorUnitario = (TextView) v.findViewById(R.id.txtValorUnitario);
vValorTotal = (TextView) v.findViewById(R.id.txtValorTotal);
vQnt= (EditText) v.findViewById(R.id.txtEditQnt);
vValUnit = (EditText) v.findViewById(R.id.txtEditUnit);
vValTot = (TextView) v.findViewById(R.id.txtTotal);
}
}
}
在您的onBindViewHolder
@Override
public void onBindViewHolder(GastosViewHolder gastosViewHolder, int i) {
GastosInfo ci = gastosLista.get(i);
gastosViewHolder.vDescricao.setText(ci.descricao);
gastosViewHolder.vQuantidade.setText(ci.quantidade);
gastosViewHolder.vValorUnitario.setText(ci.valor_unitario);
gastosViewHolder.vValorTotal.setText(ci.valor_total);
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void afterTextChanged(Editable s) {
float a, b;
try {
a = Float.parseFloat(gastosViewHolder.vQuantidade.getText());
b = Float.parseFloat(gastosViewHolder.vValorUnitario.getText());
gastosViewHolder.vValorTotal.setText(String.valueOf(a * b));
} catch (Exception e) {
// you might want to change the catch blocks to specific exceptions
// and handle them properly
}
}
};
gastosViewHolder.vQuantidade.addTextChangedListener(textWatcher);
gastosViewHolder.vValorUnitario.addTextChangedListener(textWatcher);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.