Получить значение элемента Spinner в RecyclerView на фрагмент? - PullRequest
0 голосов
/ 21 марта 2020

Каждый 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;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...