[英]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.