Получить переменную в Адаптере из Activity
Не получается получить переменную в Адаптере из Activity. Имеется класс SmetaFull.java В нем есть переменная типа String smeta_ident;
Как я могу получить эту переменную в Адаптере?
SmetaFull.java
public class SmetaFull extends AppCompatActivity {
private RecyclerView mRecyclerView;
...
String smeta_ident;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.smeta_full);
...
try {
receivedPersonId = getIntent().getLongExtra("USER_ID", 0);
smeta_name = getIntent().getStringExtra("SMETA_NAME");
smeta_ident = getIntent().getStringExtra("SMETA_IDENT"); //Переменная, которую нужно получить в AdapterSmetaFull.java
} catch (Exception e) {
e.printStackTrace();
}
setTitle(smeta_name);
full_result = findViewById(R.id.full_result);
net_punktov = findViewById(R.id.net_punktov);
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
populaterecyclerView();
}
private void populaterecyclerView() {
DatabaseAccessSmeta dbHelper = new DatabaseAccessSmeta(this);
AdapterSmetaFull adapter = new AdapterSmetaFull(dbHelper.SmetaGo(smeta_ident), this);
mRecyclerView.setAdapter(adapter);
if (net_punktov != null) {
if (adapter.getItemCount() == 0) {
fut.setVisibility(View.GONE);
net_punktov.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.GONE);
} else {
fut.setVisibility(View.VISIBLE);
net_punktov.setVisibility(View.GONE);
mRecyclerView.setVisibility(View.VISIBLE);
ItemTouchHelper.Callback callback = new RecyclerRowMoveCallback(adapter);
ItemTouchHelper touchHelper = new ItemTouchHelper(callback);
touchHelper.attachToRecyclerView(mRecyclerView);
}
}
fullsumma = dbHelper.getSumma(smeta_ident);
fullsumma_obrez = new DecimalFormat("###,###.##").format(fullsumma);
full_result.setText(fullsumma_obrez);
dbHelper.close();
}
...
}
AdapterSmetaFull.java
public class AdapterSmetaFull extends RecyclerView.Adapter<AdapterSmetaFull.ViewHolder> implements RecyclerRowMoveCallback.RecyclerViewRowTouchHelperContract{
private final List<PersonSmetaPunkt> mPeopleList;
private final Context mContext;
public AdapterSmetaFull(List<PersonSmetaPunkt> myDataset, Context context) {
mPeopleList = myDataset;
mContext = context;
}
@NonNull
@Override
public AdapterSmetaFull.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
LayoutInflater inflater = LayoutInflater.from(
parent.getContext());
View v =
inflater.inflate(R.layout.smeta_list_full, parent, false);
return new ViewHolder(v);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final PersonSmetaPunkt person = mPeopleList.get(position);
holder.num.setText(Integer.toString(position + 1));
holder.vd_rabot.setText(person.getVd_rabot());
holder.kol.setText(person.getKol());
holder.izm.setText(person.getValuta());
holder.zena.setText(person.getZena());
holder.valuta.setText(person.getValuta());
holder.result.setText(person.getSlogenie());
}
@Override
public int getItemCount() {
return mPeopleList.size();
}
@Override
public void onRowMoved(int fromPosition, int toPosition) {
if (fromPosition < toPosition) {
for (int i = fromPosition; i < toPosition; i++) {
Collections.swap(mPeopleList, i, i + 1);
}
} else {
for (int i = fromPosition; i > toPosition; i--) {
Collections.swap(mPeopleList, i, i - 1);
}
}
notifyItemMoved(fromPosition, toPosition);
String vd_rabot_from = mPeopleList.get(fromPosition).getVd_rabot();
String kol_from = mPeopleList.get(fromPosition).getKol();
String zena_from = mPeopleList.get(fromPosition).getZena();
String valuta_from = mPeopleList.get(fromPosition).getValuta();
String slog_from = mPeopleList.get(fromPosition).getSlog();
String vd_rabot_to = mPeopleList.get(toPosition).getVd_rabot();
String kol_to = mPeopleList.get(toPosition).getKol();
String zena_to = mPeopleList.get(toPosition).getZena();
String valuta_to = mPeopleList.get(toPosition).getValuta();
String slog_to = mPeopleList.get(toPosition).getSlog();
final DatabaseAccessSmeta databaseAccessSmeta = DatabaseAccessSmeta.getInstance(mContext);
databaseAccessSmeta.open();
DatabaseAccessSmeta db = new DatabaseAccessSmeta(mContext);
PersonSmetaUpdate fromUpdatedPerson = new PersonSmetaUpdate(vd_rabot_from, kol_from, zena_from, valuta_from, slog_from);
PersonSmetaUpdate toUpdatedPerson = new PersonSmetaUpdate(vd_rabot_to, kol_to, zena_to, valuta_to, slog_to);
db.updateSwap(toPosition, toUpdatedPerson);
db.updateSwap(fromPosition, fromUpdatedPerson);
db.close();
}
@Override
public void onRowSelected(ViewHolder myViewHolder) {
myViewHolder.cardView.setCardBackgroundColor(Color.GRAY);
}
@SuppressLint("NotifyDataSetChanged")
@Override
public void onRowClear(ViewHolder myViewHolder) {
myViewHolder.cardView.setCardBackgroundColor(Color.parseColor("#12dddd"));
notifyDataSetChanged();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView num;
public TextView vd_rabot;
public TextView kol;
public TextView izm;
public TextView zena;
public TextView valuta;
public TextView result;
public View layout;
public CardView cardView;
public ViewHolder(View v) {
super(v);
layout = v;
num = v.findViewById(R.id.num);
vid_rabot = v.findViewById(R.id.vd_rabot);
izm = v.findViewById(R.id.izm);
kol = v.findViewById(R.id.kol);
zena = v.findViewById(R.id.zena);
valuta = v.findViewById(R.id.valuta);
result = v.findViewById(R.id.result);
cardView = itemView.findViewById(R.id.cardView);
}
}
Как передать переменную типа String smeta_ident из SmetaFull.java в AdapterSmetaFull.java?
Источник: Stack Overflow на русском