求助、关于ListView上放SeekBar不可拖动的问题

chinabrant 2012-08-30 10:33:46
如题,我在ListView上放了SeekBar,可是SeekBar的进度不能拖,只能用点的。

希望 高手 解答 谢谢



如图,前后的Button都可以点击
...全文
2813 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ansionnal 2013-03-19
  • 打赏
  • 举报
回复
楼猪,我在Activity中通过getTag(),得到的adapter中的holder,怎么监听不到seekbar的拖动事件啊~ mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { ViewHolder vHollder = (ViewHolder) arg0.getTag(); mSeekBar = vHollder.seek; mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar arg0) { Log.i("TAG", "onStopTrackingTouch"); } public void onStartTrackingTouch(SeekBar arg0) { Log.i("TAG", "onStartTrackingTouch"); } public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { Log.i("TAG", "onProgressChanged"); } }); } });
chinabrant 2012-08-30
  • 打赏
  • 举报
回复
原来我改写了onTouch事件,返回false,现在没事了,谢谢。。。
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
意思是能拖动,只不过没能及时刷新呗 !!拖动的过程没显示出来??
chinabrant 2012-08-30
  • 打赏
  • 举报
回复
能调用,那个消息都收到了。。
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (fromUser)
// 只处理来自用户拖动的进度改变
sendMessage(MSG_PLAY_SEEKTO, progress);

}
这个方法 能调用???
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
怎么怀疑你的这个seekbar的事件是不是被其他的空间给半路截取了啊!!拖动的事件根本没被seekbar接收!被其他空间截取了
chinabrant 2012-08-30
  • 打赏
  • 举报
回复
能响应。。。。
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
holder.sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (fromUser)
// 只处理来自用户拖动的进度改变
sendMessage(MSG_PLAY_SEEKTO, progress);

}
});

这里是 seekbar的监听吧!! 日志打印能响应吗??
chinabrant 2012-08-30
  • 打赏
  • 举报
回复
代码好乱,上些原因我在adapter里面监听的,listview的itemClick事件没有监听

private void updateData(final int position, ViewHolder holder,
HashMap<String, Object> item) {
//是否是正在播放的item
boolean isCurrent = false;

if (item.get(RECORD_INFO_IS_PLAYING) != null
&& (Boolean) item.get(RECORD_INFO_IS_PLAYING)) {
isCurrent = true;
holder.layout.setVisibility(View.VISIBLE);
String s = Utils.formatDuration((Integer) item.get(RECORD_INFO_DURATION));
holder.tvTotalTime.setText(s);

if (playState == STATE_PLAY) {
holder.ibPlay.setImageResource(R.drawable.sr_list_pause_button);
} else if (playState == STATE_PAUSE) {
holder.ibPlay.setImageResource(R.drawable.sr_list_play_button);
}

holder.sb.setMax((Integer) item.get(RECORD_INFO_DURATION));
if (item.get(RECORD_INFO_PROGRESS) != null) {
holder.tvCurrentPlayTime.setText(Utils.formatDuration((Integer) item.get(RECORD_INFO_PROGRESS)));
holder.sb.setProgress((Integer) item.get(RECORD_INFO_PROGRESS));
} else {
holder.tvCurrentPlayTime.setText(Utils.formatDuration(0));
}
} else {
isCurrent = false;
holder.layout.setVisibility(View.INVISIBLE);
holder.ibPlay.setImageResource(R.drawable.sr_list_play_button);
}

//将position放到要监听的button和layout的tag里,在onClick里取出,即可得到当前点击的view
holder.ibDelete.setTag(isCurrent);
holder.listItem.setTag(isCurrent);

holder.tvName.setText((item.get(RECORD_INFO_NAME) + "").replace('-', ':'));
holder.tvLastModifyTime.setText(item.get(RECORD_INFO_LAST_MODIFIED_TIME) + "");
holder.ibDelete.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (playState == STATE_PLAY) {
sendMessage(MSG_TOAST_WAIT_PLAY_OVER);
return;
} else if (playState == STATE_PAUSE) {
if (((Boolean) v.getTag())) {
// 发送消息,删除当前暂停的item
sendMessage(MSG_DELETE_PAUSE);
playState = STATE_IDLE;
return;
}
}

// 先删除文件
FileHelper.deleteFile(data.get(
position).get(
RECORD_INFO_PATH) + "");
// 将要删除的item从data中删除
data.remove(position);
// 更新显示
SoundListAdapter.this.notifyDataSetChanged();
sendMessage(MSG_TOAST_DELETE_SUCCESS);
}
});

holder.layout.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
}
});

holder.sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (fromUser)
// 只处理来自用户拖动的进度改变
sendMessage(MSG_PLAY_SEEKTO, progress);

}
});

// 同上面的ibplay的监听 ,改动小, 监听点击item时播放暂停等操作
holder.listItem.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
currentPlay = position;

switch (playState) {
case STATE_IDLE:
playState = STATE_PLAY;
sendMessage(MSG_PLAY_START, position);
break;
case STATE_PLAY:
if (!((Boolean) v.getTag())) {
sendMessage(MSG_PLAY_START, position);
break;
} else {
playState = STATE_PAUSE;
sendMessage(MSG_PLAY_PAUSE);
}

break;
case STATE_PAUSE:
playState = STATE_PLAY;
if (!((Boolean) v.getTag())) {
sendMessage(MSG_PLAY_START, position);

} else {
sendMessage(MSG_PLAY_RESTART);
}

break;
}
}
});

//监听长按事件,弹出重命名对话框
holder.listItem.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
if (playState == STATE_PLAY || playState == STATE_PAUSE) {
sendMessage(MSG_TOAST_WAIT_PLAY_COMPLETE);
return true;
}

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.rename);
View view = LayoutInflater.from(context).inflate(R.layout.rename_dialog_layout, null);
final EditText editText = (EditText) view.findViewById(R.id.edt_new_name);
FileNameTextWatcher watcher = new FileNameTextWatcher();

builder.setView(view);
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
String newName = editText.getText().toString();
if (newName.equals("") || newName == null) {
dialog.dismiss();
return;
}

String newPath = path.substring(0, path
.lastIndexOf('/') + 1)
+ newName
+ path.substring(path.lastIndexOf('.'),
path.length());
FileHelper.rename(path, newPath);
//
sendMessage(MSG_UPDATE_DIS);
dialog.dismiss();
}
});
builder.setNegativeButton(R.string.cancel, null);
AlertDialog dialog = builder.create();
dialog.show();
watcher.setButton(dialog.getButton(AlertDialog.BUTTON_POSITIVE));
editText.addTextChangedListener(watcher);
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);

path = data.get(position).get(
RECORD_INFO_PATH) + "";
return true;
}
});
}
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
seekbar 肯定是能拖动的,楼主拖动不了 肯定有问题,贴代码吧
chinabrant 2012-08-30
  • 打赏
  • 举报
回复


我自定的Adapter继承自BaseAdapter
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
楼主 破图!!看不到!!

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧