80,337
社区成员
发帖
与我相关
我的任务
分享
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;
}
});
}