我最终学会这样做的方法是让我的自定义适配器成为我活动的内部类。通过这样做,我有全局变量,我可以在适配器和它填充的活动之间发送数据。
关于获取 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;
}
}