我有一个自定义适配器的列表视图,它使用一个搜索栏和一个文本视图完成。
@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;
}
现在,问题在于,当我移动(例如)第二个搜索栏时,仅在最后一个文本视图中更改文本。为什么?我怎样才能解决这个问题?我希望如果我移动第二个搜索栏更改相对文本视图的文本而不是最后一个。
答案 0 :(得分:0)
用
替换前两行View v = super.getView(position, convertView, parent);
初始化适配器时
ArrayAdapter<String> languagesAdapter = new ArrayAdapter<String>(mContext, R.layout.adapter, arrayLanguages)
答案 1 :(得分:0)
从代码判断,value
是一个成员变量,只要调用getView
,它就会被getView
覆盖。这就是为什么您的计划会更新另一个TextView
,OnSeekBarChangeListener
引用value
。
你应该使用这样的局部变量:
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