Seekbar 自定义适配器 - 从 OnItemClickListener 获取 Seekbar 的值
Seekbar Custom Adaptor - get values of Seekbar from OnItemClickListener
我有一个类别数组,我将它们存储为一个字符串数组。
我想使用 seekbar 来设置一个 int 值,该值将与每个单独的类别相关联。鉴于类别数组将改变大小,我使用了自定义适配器来实现这一点。我的自定义适配器获取我的类别数组中的每个字符串并创建一个文本视图,它用类别名称填充它并创建一个搜索栏,用户将与之交互以设置一个与类别名称相关联的值。然后我想获取搜索栏的所有值并将它们存储在一个数组中,该数组将与类别数组相关联。
我不知道如何获取搜索栏值,因为它们是在自定义数组中以编程方式创建的。我曾尝试使用 "getItemAtPosition()" 但这将 return 类别名称而不是搜索栏值。
有人能告诉我我应该采取什么方法来获取这些值吗?所附图片:1 custom adaptor code extract. 2 自定义适配器的使用方式图片。
谢谢
肯
我最终学会的方法是让我的自定义适配器成为我的 activity 的内部 class。通过这样做,我有了全局变量,我可以通过适配器和它填充的 activity 之间发送数据。
关于获取搜索栏的进度:适配器不仅用于创建视图,它还在进行中,如果您与它创建的任何视图交互,它就会注册它。使用它来设置一个 on seekbar 更改侦听器,您可以在其中获取正在更改的 seekbar 的进度。将其传递给全局变量,然后将其传递给您的 main activity 以用于任何用途。
我发现本教程很有用:尽管它使用了回收器视图(无论如何最好这样做)。 http://vikramvalluvan.blogspot.co.uk/2016/01/interactive-listview-using-recyclerview.html?m=1
下面我的自定义适配器的片段 class。请注意,我在下面的代码片段之外设置了一个 "progressValue" 的全局变量。
class 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;
}
}
我有一个类别数组,我将它们存储为一个字符串数组。 我想使用 seekbar 来设置一个 int 值,该值将与每个单独的类别相关联。鉴于类别数组将改变大小,我使用了自定义适配器来实现这一点。我的自定义适配器获取我的类别数组中的每个字符串并创建一个文本视图,它用类别名称填充它并创建一个搜索栏,用户将与之交互以设置一个与类别名称相关联的值。然后我想获取搜索栏的所有值并将它们存储在一个数组中,该数组将与类别数组相关联。
我不知道如何获取搜索栏值,因为它们是在自定义数组中以编程方式创建的。我曾尝试使用 "getItemAtPosition()" 但这将 return 类别名称而不是搜索栏值。
有人能告诉我我应该采取什么方法来获取这些值吗?所附图片:1 custom adaptor code extract. 2 自定义适配器的使用方式图片。
谢谢
肯
我最终学会的方法是让我的自定义适配器成为我的 activity 的内部 class。通过这样做,我有了全局变量,我可以通过适配器和它填充的 activity 之间发送数据。
关于获取搜索栏的进度:适配器不仅用于创建视图,它还在进行中,如果您与它创建的任何视图交互,它就会注册它。使用它来设置一个 on seekbar 更改侦听器,您可以在其中获取正在更改的 seekbar 的进度。将其传递给全局变量,然后将其传递给您的 main activity 以用于任何用途。
我发现本教程很有用:尽管它使用了回收器视图(无论如何最好这样做)。 http://vikramvalluvan.blogspot.co.uk/2016/01/interactive-listview-using-recyclerview.html?m=1
下面我的自定义适配器的片段 class。请注意,我在下面的代码片段之外设置了一个 "progressValue" 的全局变量。
class 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;
}
}