public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) // 只处理来自用户拖动的进度改变 sendMessage(MSG_PLAY_SEEKTO, progress);
} 这个方法 能调用???
原来我改写了onTouch事件,返回false,现在没事了,谢谢
楼猪,我在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"); } }); } });
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;
}
});
}
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的监听吧!! 日志打印能响应吗??
boolean fromUser) {
if (fromUser)
// 只处理来自用户拖动的进度改变
sendMessage(MSG_PLAY_SEEKTO, progress);
}
这个方法 能调用???
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");
}
});
}
});