Как очистить editText элементов списка (не listView или recyclerView) - PullRequest
0 голосов
/ 23 мая 2018

Список, который я здесь использую, не является RecyclerView или ListView.Он создается с использованием просто linearLayout.

llItemList = (LinearLayout)findViewById(R.id.ll_list);

И добавляя views, как показано ниже

listAdapter = new ReadingSheetAdapter(ReadingSheetActivity.this, readingDataList);
for (int i = 0; i < arrPdtId.size(); i++) {
     llItemList.addView(listAdapter.getView(i, null, llItemList));
}

Здесь я использую editText в элементах списка, который описан вадаптер класса.У меня button в активности.

Я хочу сбросить все значения editText при нажатии кнопки.

Ниже getView() класса ReadingSheetAdapter.

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        final ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.reading_sheet_layout, parent, false);

            holder.pdtName = (TextView)convertView.findViewById(R.id.txt_list_pdt_supp);
            holder.keyId = (TextView)convertView.findViewById(R.id.key_set);
            holder.tvOpenRead = (TextView) convertView.findViewById(R.id.open_val_set);
            holder.etClosRead = (EditText)convertView.findViewById(R.id.clos_val_set);
            holder.consumption = (TextView)convertView.findViewById(R.id.consumption_val);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder)convertView.getTag();
        }
        ReadingData temp = readingList.get(position);
        holder.pdtName.setText(temp.pdtName);
        holder.keyId.setText("Key "+temp.keyId);
        holder.tvOpenRead.setText(temp.closReading);
        holder.holdPos = position;

        holder.etClosRead.addTextChangedListener(new TextWatcher() {
            boolean ignore = false;
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }
            @Override
            public void afterTextChanged(Editable s) {
                if (ignore)
                    return;
                ignore = true;
                valOpenReading = holder.tvOpenRead.getText().toString();
                arrValOpenRead[position] = valOpenReading;
                valClosReading = s.toString().equals("") ? "0": s.toString();
                arrValClosRead[position] = valClosReading;
                if (Integer.parseInt(valClosReading) < Integer.parseInt(valOpenReading)) {
                    Toast.makeText(context, "Check once! closing reading should be more than opening reading!", Toast.LENGTH_LONG).show();
                    valConsumption = "0";
                    holder.consumption.setText("");
                } else {
                    valConsumption = (Integer.parseInt(valClosReading) - Integer.parseInt(valOpenReading))+"";
                    arrValConsumption[position] = valConsumption;
                    holder.consumption.setText(valConsumption);
                }
                ignore = false;
            }
        });
        return convertView;
    }

Как выполнить действие на editText, который находится в классе адаптера при нажатии кнопки, которая находится в действии?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

с использованием notifyDataSetChanged() (если влияет на весь адаптер) или notifyItemChanged(position) - (это влияет на конкретное положение адаптера).

0 голосов
/ 23 мая 2018

похоже, у вас есть коллекция объектов:

readingList

вы должны перебрать эту коллекцию и очистить строки, которые вы хотите удалить, которые будут удаленытекстовые данные в вашем адаптере.

, тогда все, что вам нужно сделать, это обновить:

notifyDataSetChanged();
...