Android - 无法在 View Pager Adapter 中更新 textview

伊恩·菲特

我有一个计数器视图,它应该随着用户触摸minusplus按钮而更新

我正在尝试在 ViewPager 的适配器instantiateItem方法中更新计数器,但它没有任何效果。

我只能在instantiateItem. setText()外面有什么办法instantiateItem吗?对不起,愚蠢的问题,我是 Android 的新手。

public class OrderVPAdapter extends PagerAdapter implements View.OnClickListener {

    private ArrayList<SomeItem> list;
    private Context context;

    public TextView counterView;
    View view;

    // I skipped some code for better understanding

    int counter = 0;

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        LayoutInflater layoutInflater = LayoutInflater.from(context);

        view = layoutInflater.inflate(R.layout.vp_item, container, false);

        counterView = view.findViewById(R.id.counter);

        Button plus, minus;
        plus = view.findViewById(R.id.btn_plus);
        plus.setOnClickListener(this);

        minus = view.findViewById(R.id.btn_minus);
        minus.setOnClickListener(this);

        container.addView(view, 0);

        return view;
    }

    @Override
    public void onClick(View view) {
        if(view.getId() == R.id.btn_plus) {
            counter++;
        }
        else {
            if(counter > 0)
                counter--;
        }
        counterView.setText(counter);
    }
伊利丹塔斯

对于初学者 Ian 来说,这是一个很好的问题,请查看我对我所做的每个更改的评论:

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

public class OrderVPPageAdapter extends PagerAdapter {

    // 10 counters, one for each page
    int[] counter = new int[10];

    @Override
    public int getCount() {
        return 10;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return o == view;
    }

    @NonNull
    @Override
    public Object instantiateItem(final ViewGroup container, int position) {
        LayoutInflater layoutInflater = LayoutInflater.from(container.getContext());
        View view = layoutInflater.inflate(R.layout.vp_item, container, false);

        // counterView needs to be local variable so it can serve as          
        // reference for each page when updated inside buttons' OnClickListener
        TextView counterView = view.findViewById(R.id.counter);
        Button plus = view.findViewById(R.id.btn_plus);
        Button minus = view.findViewById(R.id.btn_minus);

        // Set up counter value every time as this method will be 
        // called and update UI whenever you swipe between pages
        counterView.setText(String.valueOf(counter[position]));

        plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Update specific page counter in array position
                counter[position]++;
                counterView.setText(String.valueOf(counter[position]));
            }
        });

        minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (counter[position] > 0)
                    counter[position]--;
                counterView.setText(String.valueOf(counter[position]));
            }
        });

        container.addView(view);

        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法更新View Pager中的中间片段。

Textview Gravity在android中无法正常工作

Android Studio:第二活动中的TextView无法更新

从Recyclerview Adapter类更新textview

Android View Pager适配器显示空白屏幕

使用View Pager Android的Cover Flow功能

无法从Recycler View Adapter启动Activity

无法更新RecyclerView中的TextView字段

在Kotlin中禁用Viewpager的View Pager滑动

无法在Android中的for循环中在textView中设置文本?

Android TextView无法更新

Textview在Android布局中无法正确包装

android list array adapter.notifydatasetchanged无法正确更新视图

如何在View Pager Android中保存图像?

无法在Adapter的getView方法内的TextView(以编程方式创建)中启动Intent

翻转Fragment android view pager

在Android View Pager中需要帮助

Android-在RecyclerView.Adapter中更改附加到ViewHolder的TextView的textSize

在Android Studio中更新textView

从Android中的Listview Adapter访问Activity中的TextView

LinearLayout android中的TextView Alignment。无法将其放置在版面中心

无法创建实现Android View Pager的滑动视图

Android重心无法在TextView中工作

TabHost不适用于View Pager Android

如何将sqlite数据库中的图像加载到android view pager中

片段无法在 View_pager tabLayout 中加载

Android RecyclerView Adapter:在当前 itemview 的点击监听器中更新已经绘制的 item view

Android Adapter 未更新

recycler view adapter android中getItemViewType()的含义