我有一个类别数组,我将其存储为字符串数组。 我想使用搜索栏来设置一个与每个类别相关联的int值。鉴于类别数组将改变大小我已经使用自定义适配器来允许这个。我的自定义适配器获取我的categories数组中的每个字符串,并创建一个textview,它用类别名称填充,并创建一个用户要与之交互的搜索栏,以设置一个与类别名称相关联的值。然后我想获取seekbars的所有值并将它们存储在一个与categories数组相关联的数组中。
我不知道如何获取seekbar值,因为它们是在自定义数组中以编程方式创建的。我试过使用" getItemAtPosition()"但这将返回类别名称而不是搜索栏值。
有人可以告诉我一个方法,我应该以某种方式获得价值观。附加图片:1自定义适配器代码提取。 2关于如何使用自定义适配器的图像。
谢谢
肯
答案 0 :(得分:0)
我最终学会这样做的方法是让我的自定义适配器成为我活动的内部类。通过这样做,我有全局变量,我可以通过适配器和它填充的活动之间发送数据。
关于获取搜索栏的进度:适配器不仅仅用于创建视图,它正在进行,因为如果您与它创建的任何视图进行交互,它就会注册它。使用此选项设置一个on seekbar change listener,您可以在其中获取更改搜索条的进度。将此传递给全局变量,然后将其传递给您的主要活动以用于任何事情。
我发现本教程很有用:虽然它使用了一个回收站视图(最好还是这样做)。 http://vikramvalluvan.blogspot.co.uk/2016/01/interactive-listview-using-recyclerview.html?m=1
下面的自定义适配器类的片段。注意我有一个全局变量" progressValue"设置在下面的片段之外。
class CustomAdaptor_InputSliders extends 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;
}
}