Как обновить текст из адаптера recyclerview в другой макет xml

У меня внутри есть ActivityCheckout.java переходник AdapterServiceCourier. Класс адаптера предназначен для отображения переключателя цена. Как я могу обновить textview с помощью представления, которое находится в ActivityCheckout. нравиться

public TextView getTextViewPriceOngkir()
{

    TextView txtView = (TextView)findViewById(R.id.price_ongkir);
    return txtView;
}

когда я использовал в адаптере AdapterServiceCourier:

ActivityCheckout ac = new ActivityCheckout();
            TextView tv = ac.getTextViewPriceOngkir();
            tv.setText("8");

его ошибка вроде:

E/UncaughtException: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class <unknown>

AdapterServiceCourier.java:

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    SharedPreferences sharedPreferences = context.getSharedPreferences(AppConfig.APP_PUPUKKUJANG_MART, Context.MODE_PRIVATE);
    final String whois = sharedPreferences.getString(AppConfig.USER_WHOIS,null);
    row_index = -1;
    holder.itemView.setTag(service.get(position));
    final ServiceCourier p = service.get(position);
    holder.service.setText(p.getService());
    holder.desc.setText(p.getDescription());
    holder.cost.setText(p.getCost());
    holder.etd.setText(p.getEtd());
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });
    View.OnClickListener rbClick = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RadioButton checked_rb = (RadioButton) v;
            if (lastCheckedRB != null){
                lastCheckedRB.setChecked(false);
            }
            lastCheckedRB = checked_rb;
            SharedPreferences sharedPreferences = context.getSharedPreferences(AppConfig.APP_PUPUKKUJANG_MART, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putString("ongkir_service", p.getService());
            editor.putString("ongkir_description", p.getDescription());
            editor.putString("ongkir_cost", p.getCost());
            editor.putString("ongkir_etd", p.getEtd());
            editor.apply();

            ActivityCheckout ac = new ActivityCheckout();
            TextView tv = ac.getTextViewPriceOngkir();
            tv.setText("8");
        }
    };
    holder.radiobutton.setOnClickListener(rbClick);
}

Отображать: изображение щелкните переключатель, цена должна быть установлена ​​на уровне онгкир введите описание изображения здесь

прикрепите свой xml-файл.

Nouman Ch 10.09.2018 06:22

Ошибка отсутствует в коде, ошибка в основном в файле xml

Vishal 10.09.2018 06:22
Вы не можете просто создавать объекты Activity, используя:ActivityCheckout ac = new ActivityCheckout();
AskNilesh 10.09.2018 06:23

Вы устанавливаете текст в класс TextView, который не прикреплен к вашему XML-макету.

Aslam Hossin 10.09.2018 06:23

Вы не можете создать новое действие, подобное этому, ОС создаст каждое действие. вы должны передать ссылку на свою активность адаптеру и поместить текст в это текстовое представление

Shayan Tabatabaee 10.09.2018 06:24

укажите, что когда вы хотите обновить textView, я имею в виду, когда выбран переключатель

Ashvin solanki 10.09.2018 06:39

@Ashvinsolanki обновляю вопрос

willy 10.09.2018 06:59

@this, где вы инициализировали адаптер, я имею в виду при проверке активности?

Ashvin solanki 10.09.2018 07:03

@Ashvinsolanki да, я инициализирую адаптер в проверке активности

willy 10.09.2018 08:42

@willy и textView, которые вы хотите обновить, находятся в этом действии

Ashvin solanki 10.09.2018 08:42

@Ashvinsolanki Да, конечно

willy 10.09.2018 08:44

хорошо, я отправлю ответ

Ashvin solanki 10.09.2018 08:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
12
246
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

YourAdapter instance = new YourAdapter (context, arrayList, textView);

Теперь в конструкторе адаптера вы можете получить доступ к этому текстовому окну.

YourAdpater.java

TextView textView;
YourAdapter(Context context,Arraylist<ModelClass> arraylist,TextView textView)
{
this.textView = textView;
} 

Теперь в адаптере вы можете обновлять значения textview.

это наблюдаемый шаблон проектирования:

  1. ваша деятельность должна реализовывать интерфейс Observer

  2. ваш адаптер должен расширять класс Observable

  3. вы должны добавить свою активность в свой адаптер

  4. с помощью метода notiftyObserver вы можете обновить свою активность

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

Ответ принят как подходящий

В вашем классе адаптера OnClick RadioButton

View.OnClickListener rbClick = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        RadioButton checked_rb = (RadioButton) v;
        if (lastCheckedRB != null){
            lastCheckedRB.setChecked(false);
        }
        .....
        .....
        //Create Statis Mathod in ActivityCheckout and Access Hear
         ActivityCheckout.updateTextView(String DataUWantToAdd);
    }
};

И в классе Yout ActivityCheckout

добавить статический метод Не пропустите это

class ActivityCheckout
{
 .....
  //on create and etc
  public static void updateTextView(String DataUWantToUpadate)
  {
    yourTextViewObject.setText(DataUWantToUpdate);
  }

}

Вы можете получить доступ к методу Activity в адаптере с помощью context. Создайте один метод со строковым параметром в Activity, который устанавливает строку для вашего текстового представления и вызывает этот метод в вашем адаптере, когда вы хотите изменить текст.

Другие вопросы по теме