【问题标题】:Seekbar Custom Adaptor - get values of Seekbar from OnItemClickListenerSeekbar 自定义适配器 - 从 OnItemClickListener 获取 Seekbar 的值
【发布时间】:2017-12-17 01:31:42
【问题描述】:

我有一个类别数组,我将它们存储为字符串数组。 我想使用搜索栏来设置一个 int 值,该值将与每个单独的类别相关联。鉴于类别数组会改变大小,我使用了一个自定义适配器来实现这一点。我的自定义适配器获取我的类别数组中的每个字符串并创建一个文本视图,它填充类别名称并创建一个搜索栏,用户将与之交互以设置与类别名称关联的值。然后我想获取搜索栏的所有值并将它们存储在一个数组中,该数组将与类别数组相关联。

我不知道如何获取 seekbar 值,因为它们是在自定义数组中以编程方式创建的。我曾尝试使用“getItemAtPosition()”,但这将返回类别名称而不是搜索栏值。

有人能告诉我我应该采取什么方法来获取这些值吗?附图片:1 自定义适配器代码提取。 2 自定义适配器的使用方式。

谢谢

【问题讨论】:

    标签: java android seekbar custom-adapter


    【解决方案1】:

    我最终学会这样做的方法是让我的自定义适配器成为我活动的内部类。通过这样做,我有全局变量,我可以在适配器和它填充的活动之间发送数据。

    关于获取 seekbar 的进度:适配器不仅仅用于创建视图,它在某种意义上是持续的,如果您与它创建的任何视图交互,它就会注册它。使用它来设置搜索栏更改侦听器,您可以在其中获取搜索栏更改的进度。将此传递给全局变量,然后将其传递给您的主要活动以用于任何用途。

    我发现本教程很有用:尽管它使用了回收器视图(无论如何最好这样做)。 http://vikramvalluvan.blogspot.co.uk/2016/01/interactive-listview-using-recyclerview.html?m=1

    下面我的自定义适配器类的片段。注意我在下面的 sn-p 之外设置了一个全局变量“progressValue”。

    类 CustomAdaptor_InputSliders 扩展 ArrayAdapter {

        public CustomAdaptor_InputSliders(Context context, String[] resource) {
            super(context, R.layout.input_slider_01, resource);
        }
    
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
            LayoutInflater Inflater = LayoutInflater.from(getContext());
            View customView = Inflater.inflate(R.layout.input_slider_01, parent, false);
    
            String singleViewItem = getItem(position);
            TextView title = (TextView) customView.findViewById(R.id.textView5);
            SeekBar seekbar = (SeekBar) customView.findViewById(R.id.seekBar2);
    
            title.setText(singleViewItem);
    
    
            seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    
    
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    
    
                }
    
                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
    
                }
    
                @Override
                public void onStopTrackingTouch(SeekBar bar) {
                    progressValue = bar.getProgress();
    
                }
            });
    
    
            return customView;
        }
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多