SeekBars的ListView

时间:2018-03-08 20:46:14

标签: android listview android-studio arraylist seekbar

我想知道如何制作SeekBar的ArrayList的ListView (我可以在点击按钮时将更多SeekBars添加到列表中) 我是初学者,所以我已经尝试了几个小时。这是我能做的最好的,但我不知道我是否能做到这一点:

    ArrayList<SeekBar> seekbarlist=new ArrayList<SeekBar>();
    ListView listseekbars = (ListView) findViewById(R.id.listprog);
    final ArrayAdapter<SeekBar> seekbardapter = new 
    ArrayAdapter<SeekBar>
    (this,android.R.layout.simple_list_item_1,android.R.id.text1,seekbarlist);
    listseekbars.setAdapter(seekbardapter);

我很乐意得到一些帮助:) 提前谢谢你。

2 个答案:

答案 0 :(得分:0)

您可能不希望显示SeekBars列表。您想要显示AS SeekBars的值列表。

您需要制作自定义适配器和自定义列表项布局。

自定义列表项只是一个搜索栏:

seekbar_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<SeekBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:max="100">

</SeekBar>

自定义适配器:

    private class SeekBarAdapter extends ArrayAdapter<Integer>{

    List<Integer> data;
    int resource;

    SeekBarAdapter(Context context, int layoutResource, List<Integer> data){
        super(context, layoutResource, data);
        this.data = data;
        this.resource = layoutResource;
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, @NonNull ViewGroup parent) {

        Integer value = data.get(position);

        if (convertView == null){
            convertView = LayoutInflater.from(getContext()).inflate(resource, parent);
        }

        SeekBar sb = convertView.findViewById(R.id.seekBar);
        sb.setProgress(value);

        sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean wasInitiatedByUser) {
                // do what you want with the edited values here.
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

        return convertView;
    }
}

然后实施:

ArrayList<Integer> yourvalues = new ArrayList<>();
ListView listseekbars = (ListView) findViewById(R.id.listprog);
SeekBarAdapter seekBarAdapter = new SeekBarAdapter(this, R.layout.seekbar_list_item, yourvalues);
listseekbars.setAdapter(seekBarAdapter);

答案 1 :(得分:0)

我认为您需要做的是使用RecyclerView而不是ListView不同之处在于您可以为每个项目制作布局文件,而不是将这些项目添加到RecyclerView 1}}。