在ListView中使用SeekBar

时间:2012-04-26 20:14:03

标签: android android-listview seekbar

我在列表视图中有一个搜索栏,它被禁用以阻止用户在滚动列表时更改值。如果长按列表项,我希望启用它,允许用户更改它,然后再次禁用它。

任何建议。

我似乎无法从活动中访问搜索栏,因为它在ArrayAdapter中设置以显示数据库中的值

我能够为列表项触发点击事件和长按事件,因为当前禁用了搜索栏。

2 个答案:

答案 0 :(得分:7)

解决方案

在ArrayAdapter中,我将enabled和focusable都设置为false并添加了SeekBar监听器,将属性设置为false允许我使用列表项onItemClicked监听器。在onItemCLickListener中,我检索了搜索栏,将属性设置为true,这意味着它可以向上或向下滑动。然后我在调整完成后禁用了它。代码

ArrayAdapter代码段

此代码位于列表项的创建中,其中搜索栏位于其中

    seekBar.setClickable(false);
    seekBar.setFocusable(false);
    seekBar.setEnabled(false);

    /* attach listener */
    attachProgressUpdatedListener(seekBar, positionOfItemInList);

AttachProgressUpdatedListener

此方法将侦听器附加到arrayAdapter类

内的搜索条
private void attachProgressUpdatedListener(SeekBar seekBar,
    final int position) {

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

    public void onStopTrackingTouch(SeekBar seekBar) {
    int progress = seekBar.getProgress();
    int task_id = (Integer) seekBar.getTag();

    TaskHandler taskHandler = new TaskHandler(DBAdapter
        .getDBAdapterInstance(getContext()));

    taskHandler.updateTaskProgress(task_id, progress);

    mList.get(position).setProgress(progress);

    //need to fire an update to the activity
    notifyDataSetChanged();
    seekBar.setEnabled(false);

    }

    public void onStartTrackingTouch(SeekBar seekBar) {
    // empty as onStartTrackingTouch listener not being used in
    // current implementation

    }

    public void onProgressChanged(SeekBar seekBar, int progress,
        boolean fromUser) {
    // empty as onProgressChanged listener not being used in
    // current implementation

    }
});

}

OnItemCLickListener

此剪辑来自列出视图的活动。

taskListView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
    SeekBar sb = (SeekBar) view.findViewById(R.id.seek);
    sb.setFocusable(true);
    sb.setEnabled(true);

    }
});

答案 1 :(得分:0)

我通过将以下属性设置为seekbar项目布局文件中的listview来克服此问题。然后我发现了click listitem事件seekbar android:focusable="false" android:focusableInTouchMode="false" <SeekBar android:id="@+id/playback_icon" android:layout_width="fill_parent" android:layout_height="wrap_content" android:progress="0" android:progressDrawable="@drawable/red_scrubber_progress" android:thumb="@drawable/red_scrubber_control" android:focusable="false" android:focusableInTouchMode="false"/>

_id,official_name,common_name,country,started_by.day,started_by.month,started_by.year,championship,stadium.name,stadium.capacity,palmares.first_prize,palmares.second_prize,palmares.third_prize,palmares.fourth_prize,average_age,squad_value,foreigners,uniform
0,yaDIXxLAOV,WWYWLqPcYM,QsVwiNmeGl,7,9,1479,oYKGgstIMv,qskcxizCkd,8560,10,25,9,29,16,58,6,"[""first_colour"",""second_colour"",""third_colour""]"