Каждый Qr_code получает разные предметы (= INSP_TYPE) в RecyclerView из БД.
У каждого разных предметов один и тот же Spinner.
Я хочу ввести «Y» или «R» или «F». "с помощью Spinner для каждой отдельной темы и обновления базы данных.
Но я могу получить только 1 недавно выбранный элемент для записи при нажатии кнопки onClick.
Как получить все выбранные значения элемента Spinner в RecyclerView по адресу Фрагмент отчетливо.
Пожалуйста, помогите ...
введите описание изображения здесь
Вот мой КОД
publi c Класс FourFragment extends Fragment {
TextView CHK_DATE, CHK_STATUS;
EditText CHK_DETAIL, CHK_DETAIL1;
Button btn_checkInsert;
String qr_code, id, item = "";
String paramPLAN_DATE;
private String S_ReqType;
private RecyclerView CheckListRecyclerView;
private CheckListAdapter adapter;
public static String fff;
public FourFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView;
SharedPreferences pref = this.getActivity().getSharedPreferences("pref", Activity.MODE_PRIVATE);
// Inflate the layout for this fragment
rootView = inflater.inflate(R.layout.fragment_four_1, container, false);
id = pref.getString("id", id);
SimpleDateFormat sdf = new SimpleDateFormat("yy.MM.dd", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());
CHK_DATE = rootView.findViewById(R.id.CHK_DATE);
CHK_DATE.setText(currentDateandTime);
qr_code = ((MainActivity) getActivity()).getcode();
CHK_STATUS = rootView.findViewById(R.id.CHK_STATUS);
CHK_STATUS.setText(getCheck(qr_code).get(1));
CheckListRecyclerView = rootView.findViewById(R.id.frag4_list2);
CheckListRecyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext().getApplicationContext());
CheckListRecyclerView.setLayoutManager(layoutManager);
adapter = new CheckListAdapter(getCheckListDataset(qr_code));
CheckListRecyclerView.setAdapter(adapter);
btn_checkInsert = rootView.findViewById(R.id.btn_checkInsert);
btn_checkInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "DB No Answer", Toast.LENGTH_SHORT).show();
Log.v("Spinner : ", fff);
}
});
return rootView;
}
private ArrayList<String> getCheck(String param) {
ArrayList<String> resultDataset = new ArrayList<>();
HashMap<String, String> params = new HashMap<>();
S_ReqType = "1";
params.put("type", S_ReqType);
params.put("qrcode", param);
try {
String result = ServerConnection.performPostCall("DB.jsp", params);
Log.v("ddd", result);
if (result == null) {
Toast.makeText(getContext(), "DB No Answer", Toast.LENGTH_SHORT).show();
} else {
HashMap<String, String> resultQuery = ConvertUtil.xml2HashMap(result, "UTF-8");
Log.v("dddddd", resultQuery + "");
resultDataset.add(0, resultQuery.get("CHK_DATE[0]"));
resultDataset.add(1, resultQuery.get("CHK_STATUS[0]"));
}
} catch (Exception e) {
e.printStackTrace();
}
return resultDataset;
}
private ArrayList<CheckListData> getCheckListDataset(String qrcode) {
ArrayList<CheckListData> resultDataset = new ArrayList<CheckListData>();
HashMap<String, String> params = new HashMap<String, String>();
params.put("qrcode", qrcode);
try {
String result = ServerConnection.performPostCall("DB.jsp", params);
Log.v("ddd", result);
if (result == null) {
Toast.makeText(getContext(), "DB No Answer", Toast.LENGTH_SHORT).show();
} else {
HashMap<String, String> resultQuery = ConvertUtil.xml2HashMap(result, "UTF-8");
Log.v("dddddd", resultQuery + "");
for (int i = 0; i < Integer.parseInt(resultQuery.get("count")); i++) {
resultDataset.add(new CheckListData(i,
resultQuery.get("SEQ_NO[" + i + "]"),
resultQuery.get("INSP_TYPE[" + i + "]")
));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return resultDataset;
}
}
publi c Класс CheckListAdapter расширяет RecyclerView.Adapter {
public static ArrayList<CheckListData> itemList;
public static ArrayAdapter<KeyValueData> spinnerAdapter;
public static class DataViewHolder extends RecyclerView.ViewHolder implements AdapterView.OnItemSelectedListener {
public TextView SEQ_NO, INSP_TYPE;
public Spinner INSP_VAL;
String item = "";
Context mContext;
String[] arraySpinner = new String[] { "Y", "R", "F" };
public DataViewHolder(View v) {
super(v);
mContext = v.getContext();
SEQ_NO = v.findViewById(R.id.SEQ_NO);
INSP_TYPE = v.findViewById(R.id.INSP_TYPE);
INSP_VAL = v.findViewById(R.id.INSP_VAL);
spinnerAdapter = new ArrayAdapter(mContext, R.layout.spinner_item, arraySpinner);
INSP_VAL.setAdapter(spinnerAdapter);
INSP_VAL.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
item = parent.getItemAtPosition(position).toString();
Log.v("Spinner : ", item);
FourFragment.fff = item;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.frag4_list2, parent, false);
RecyclerView.ViewHolder vh = new DataViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
DataViewHolder dataViewHolder = (DataViewHolder) holder;
dataViewHolder.SEQ_NO.setText(itemList.get(position).getSEQ_NO());
dataViewHolder.INSP_TYPE.setText(itemList.get(position).getINSP_TYPE());
}
@Override
public int getItemCount() {
return itemList.size();
}
public CheckListAdapter(ArrayList<CheckListData> dataset) {
itemList = initItemList(orderByTimeDesc(dataset));
}
private ArrayList<CheckListData> initItemList(ArrayList<CheckListData> dataset) {
ArrayList<CheckListData> result = new ArrayList<>();
for (CheckListData data : dataset) {
result.add(data);
}
return result;
}
private ArrayList<CheckListData> orderByTimeDesc(ArrayList<CheckListData> dataset) {
ArrayList<CheckListData> result = dataset;
return result;
}
}