package com.greenaddress.greenbits.ui;
import android.annotation.SuppressLint;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
import android.widget.TextView;
import com.greenaddress.greenbits.GaService;
import org.bitcoinj.core.Coin;
import java.util.ArrayList;
class AccountItemAdapter extends RecyclerView.Adapter<AccountItemAdapter.Item> {
private final ArrayList<String> mNames;
private final ArrayList<Integer> mPointers;
private OnAccountSelected mOnAccountSelected;
private final GaService mService;
interface OnAccountSelected {
void onAccountSelected(int account);
}
public AccountItemAdapter(final ArrayList<String> names, final ArrayList<Integer> pointers, final GaService service) {
mNames = names;
mPointers = pointers;
mService = service;
}
public void setCallback(final OnAccountSelected cb) {
mOnAccountSelected = cb;
}
@Override
public Item onCreateViewHolder(final ViewGroup parent, final int viewType) {
final View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.dialog_accountlistitem, parent, false);
return new Item(view);
}
private void onDisplayBalance(final Item holder, final int position) {
final Coin balance = mService.getCoinBalance(mPointers.get(position));
UI.setCoinText(mService, holder.mUnit, holder.mBalance, balance);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(final Item holder, final int position) {
holder.mName.setText(mNames.get(position));
onDisplayBalance(holder, position);
final boolean isCurrent = mPointers.get(position) == mService.getCurrentSubAccount();
holder.mRadio.setChecked(isCurrent);
final View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(final View view) {
mOnAccountSelected.onAccountSelected(position);
}
};
holder.mView.setOnClickListener(listener);
// Some Android versions do not pass the radio click to the
// view, so we override its listener here too.
holder.mRadio.setOnClickListener(listener);
}
@Override
public int getItemCount() {
return mNames.size();
}
public static class Item extends RecyclerView.ViewHolder {
final View mView;
final RadioButton mRadio;
final TextView mName;
final TextView mUnit;
final TextView mBalance;
public Item(final View v) {
super(v);
mView = v;
mRadio = UI.find(v, R.id.radio);
mName = UI.find(v, R.id.name);
mUnit = UI.find(v, R.id.mainBalanceUnit);
mBalance = UI.find(v, R.id.mainBalanceText);
}
}
}