Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Lynatik001
38 / 32 / 12
Регистрация: 28.09.2012
Сообщений: 626
#1

Как изменить Textview из другого класса (класса адаптера RecyclerView) - Программирование Android

16.02.2017, 17:12. Просмотров 406. Ответов 3
Метки нет (Все метки)

У меня есть список RecyclerView тоесть этот файл Basket и файл что реализует cardwiew BasketAdapter. как мне изменить TextView allPrice из BasketAdapter (в нем событие происходит нажатии кнопки) и при етом событии я хотел бы изменить TextView allPrice из Basket. Вообщем код приложил там есть комментарий где его хочу использовать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
public class Basket extends AppCompatActivity {
 
    DBHelper dbHelper;
    private List<Product> list;
    ImageView btnMinus, btnPlus;
    RecyclerView recyclerView;
    BasketAdapter myAdapter;
    TextView allPrice;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basket);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        btnMinus = (ImageView) findViewById(R.id.cart_minus_img);
        btnPlus = (ImageView) findViewById(R.id.cart_plus_img);
 
 
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
 
        allPrice = (TextView) findViewById(R.id.allPrice);
        allPrice.setText(Integer.toString(getAllPrice()));
        list = DB.query(this);
 
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setHasFixedSize(true);
        
        myAdapter = new BasketAdapter(list);
        recyclerView.setAdapter(myAdapter);
 
    }
}

http://www.cyberforum.ru/android-dev/thread1355297.html
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
public class BasketAdapter extends RecyclerView.Adapter<BasketAdapter.ViewHolder> {
    private static List<Product> list;
 
 
    public BasketAdapter(List<Product> list)
    {
        this.list = list;
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent1, int viewType) {
        Context context = parent1.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.basket_list_item,parent1,false);
        return new ViewHolder(view);
    }
 
 
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Product item = list.get(position);
        holder.imgmini.setImageResource(item.getResid());
        holder.textTitle.setText(item.getName());
 
        if(item.getCount() != 0)
          holder.textCount.setText(Integer.toString(item.getCount()));
 
        holder.textCost.setText(Integer.toString(item.getPrice()));
    }
 
    @Override
    public int getItemCount() {
        return list.size();
    }
    public static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView imgmini;
        ImageView btnMinus, btnPlus;
        TextView textTitle;
        TextView textCount;
        TextView textCost;
        CardView cv;
        TextView allPrice;
        private final Context context;
        public ViewHolder(final View itemView)
        {
            super(itemView);
            final TextView cart;
 
            imgmini = (ImageView) itemView.findViewById(R.id.imgmini);
            textTitle = (TextView) itemView.findViewById(R.id.textTitle);
            textCount = (TextView) itemView.findViewById(R.id.cart_product_quantity_tv);
            textCost = (TextView) itemView.findViewById(R.id.textCost);
            btnMinus = (ImageView) itemView.findViewById(R.id.cart_minus_img);
            btnPlus = (ImageView) itemView.findViewById(R.id.cart_plus_img);
            cart = (TextView) itemView.findViewById(R.id.cart_product_quantity_tv);
            cv = (CardView) itemView.findViewById(R.id.cv1);
 
 
 
            context = itemView.getContext();
 
            View.OnClickListener onClickListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
 
                    String text = cart.getText().toString();
                    ContentValues cv = new ContentValues();
                    cv.put(DBHelper.KEY_COUNT,1);
                    int count = Integer.parseInt(text);
                    switch (v.getId()) {
                        case R.id.cart_minus_img:
                            if(count > 1){
                                count-- ;
 
                                DB.update(context,list.get(getLayoutPosition()).getId() ,cv);
                               //вот тот надо бы как то достать     TextView allPrice; из Basket и allPrice.setText(Integer.toString(DB.getAllPrice(context)));
                               //вот как сделать хз 
 
                            }
                            else if (count == 1)
                                list.remove(0);
                            break;
                        case  R.id.cart_plus_img:
                            count++;
                            break;
 
                    }
                    cart.setText(Integer.toString(count));
                }
            };
 
            btnMinus.setOnClickListener(onClickListener);
            btnPlus.setOnClickListener(onClickListener);
            
        }
 
    }
 
}
Добавлено через 5 часов 8 минут
что некто не знает как переменную TextView c другого класса обработать в данном случае?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2017, 17:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как изменить Textview из другого класса (класса адаптера RecyclerView) (Программирование Android):

Изменить текст TextView другого Фрагмента, не открывая его
Могу передать данные из Activiry во фрагмента когда он открыт. blank1 =...

Как выполнить setContentView из другого класса?
Есть класс &quot;Core&quot; который является &quot;точкой входа&quot; в приложение, и есть класс в...

Как запустить метод из другого класса?
есть класс: public class Class1 extends DialogFragment implements...

Обработка нажатий внутри класса адаптера
Можно ли обрабатывать нажатия в классе адаптера expandablelistview? Если нет,...

Как передать данные в Activity из другого класса
При нажатии на кнопку, создается активити orgAdapter = new OrgAdapter(this,...

3
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
17.02.2017, 08:44 #2
Лучший ответ Сообщение было отмечено Lynatik001 как решение

Решение

Lynatik001, если вы абсолютно уверены что контрол который вы хотите менять в другом классе жив (в случае изменения текста в активити из адаптера списка лежащего в этой же активити это действительно так), то просто передайте в адаптер ссылку на контрол. Если же это вообще другой класс который мог успеть умереть то так делать нельзя и придётся применять другие методы
1
Lynatik001
38 / 32 / 12
Регистрация: 28.09.2012
Сообщений: 626
17.02.2017, 13:57  [ТС] #3
Цитата Сообщение от vxg Посмотреть сообщение
Lynatik001, если вы абсолютно уверены что контрол который вы хотите менять в другом классе жив (в случае изменения текста в активити из адаптера списка лежащего в этой же активити это действительно так), то просто передайте в адаптер ссылку на контрол. Если же это вообще другой класс который мог успеть умереть то так делать нельзя и придётся применять другие методы
да спасибо за совет.
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
17.02.2017, 14:01 #4
что тут непонятного?
Java
1
myAdapter = new BasketAdapter(list, allPrice);
и в адаптере принимаешь ссылку на эту текствью и делаешь там с нем что угодно
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2017, 14:01
Привет! Вот еще темы с решениями:

Получение данных из другого класса
Подскажите как решить проблему. У меня есть два класса разнесенных по разным...

Функция activity из другого класса
Есть главная activity и создаю класс для отрисовки графики: Activity: public...

Обращение к ImageView из другого класса
Здравствуйте, проблема в следующем. В MainActivity.class объявил переменные и...

Импорт класса из другого проекта
Подскажите, пожалуйста, каким образом я могу импортировать класс Java, который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru