[英]Adapter with seekbar and textview
我有一个带有自定义适配器的listview,该适配器使用一个搜寻栏和一个textview完成。
@Override
public View getView(final int position, View view, ViewGroup parent) {
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.adapter, null);
seekBar = (SeekBar)view.findViewById(R.id.seekBar);
value = (TextView)view.findViewById(R.id.name);
seekBar.setMax(200);
value.setText(myArray[position]+" - "+value);
seekBar.setProgress(value);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
seek = seekBar.getProgress();
value.setText(myArray[position]+" - "+progress+" MB");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
return view;
}
现在,问题是当我移动(例如)第二个搜索栏时,仅在最后一个textview处更改文本。 为什么? 我怎样才能解决这个问题? 我希望如果我移动第二个搜索栏,请更改相对文本视图的文本,而不是最后一个。
将前两行替换为
View v = super.getView(position, convertView, parent);
并且在初始化适配器时
ArrayAdapter<String> languagesAdapter = new ArrayAdapter<String>(mContext, R.layout.adapter, arrayLanguages)
从代码来看, value
是一个成员变量,它总是通过重写getView
每当getView
被调用。 这就是为什么您的程序将在OnSeekBarChangeListener
引用value
更新另一个TextView
的OnSeekBarChangeListener
。
您应该使用如下本地变量:
public View getView(final int position, View view, ViewGroup parent) {
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TextView view = inflater.inflate(R.layout.adapter, null);
SeekBar seekBar = (SeekBar)view.findViewById(R.id.seekBar);
final TextViewvalue = (TextView)view.findViewById(R.id.name);
//rest of your code
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.