簡體   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