繁体   English   中英

带有seekbar和textview的适配器

[英]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更新另一个TextViewOnSeekBarChangeListener

您应该使用如下本地变量:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM