public
abtract
class
ListItem {
private
final
String label1;
private
final
String label2;
private
final
String hint1;
private
final
String hint2;
protected
double
value1;
protected
double
value2;
public
abstract
double
calcuate();
}
public
class
BPS
extends
ListItem {
@Override
public
double
calcuate() {
}
}
public
class
PER
extends
ListItem {
...
}
public
class
PBR
extends
ListItem {
...
}
public
class
PCR
extends
ListItem {
...
}
public
class
Fr1RecyclerViewAdapter
extends
RecyclerView.Adapter<...> {
interface
Listener {
void
itemLongClicked(ListItem item);
}
private
List<ListItem> items =
new
ArrayList<>();
public
void
setItems(List<ListItem> items) {
this
.items = items;
notifyDatasetChanged();
}
private
Listener listener;
public
void
setLisetener(Listener listener) {
this
.listener.= listener;
}
@Override
public
int
getItemCount() {
return
items.size;
}
public
ListItem getItem(
int
position) {
return
items.get(position);
}
public
void
setItemLognClickListener(View.OnLongClickListener longClickListener) {
this
.itemLognClickListener = itemLognClickListener;
}
@Override
public
void
onBindViewHolder(Fr1RecyclerViewHolder holder,
int
position) {
ListItem item = getItem(position);
holder.bind(item);
holder.itemView.setLongClickListener(
new
View.OnLongClickListener() {
@Override
public
boolean
onLongClick(View v) {
if
(listener !=
null
) {
listener.itemLongClicked(item);
return
true
;
}
return
false
;
}
});
holder.value1. addTextChangedListener(
new
TextWatcher() {
@Override
public
void
onTextChanged(CharSequence s,
int
start,
int
before,
int
count) {
compute(item);
}
});
holder.value2 addTextChangedListener(
new
TextWatcher() {
@Override
public
void
onTextChanged(CharSequence s,
int
start,
int
before,
int
count) {
compute(item);
}
});
private
void
compute(ListItem item) {
double
value1 = Double.parsetDouble(holder.value1.getText().toString());
double
value2 = Double.parsetDouble(holder.value2.getText().toString());
item.setValue1(value1);
item.setValue2(value2);
item.calcuate();
}
}
}
public
void
bind(ListItem item) {
textView.setText(item.getLabel1());
textView1.setText(item.getLabel2());
value1.setHint(item.getHint1());
value2.setHint(item.getHint2());
value1.setText(String.valueOf(item.getValue1()));
value2.setText(String.valueOf(item.getValue1()));
}