Xin chào các bạn hy vọng tất cả các bạn đều ổn. Tôi đang phát triển một ứng dụng Android sẽ phát các âm thanh khác nhau của động vật.cách làm mới chế độ xem của chế độ xem hàng trước đó của chế độ xem tái chế
Tôi đang sử dụng Chế độ xem Recycle như bạn có thể thấy trong ảnh chụp màn hình bên dưới. Bây giờ tôi đang đối mặt với một vấn đề, tôi có một nút phát bên trong hàng của tôi đang phát âm thanh của động vật bất cứ khi nào tôi phát âm thanh từ mục 0 hoặc bất kỳ vị trí nào, nó hiển thị cho tôi tùy chọn tạm dừng trong chế độ xem. Nhưng bất cứ khi nào tôi nhấp vào mục tiếp theo 1 hoặc bất kỳ mục nào khác, nó không thay đổi hình ảnh của mục trước đó 0.
Tôi đang làm mới bằng danh sách bộ điều hợp bằng cách sử dụng mã sau.! nhưng tôi nghĩ rằng nó không phải là một thực hành tốt.!
t1.recyclerView.setAdapter(null);
t1.customAdapter=new CustomAdapter(t1.animalList,ctx);
t1.recyclerView.setAdapter(t1.customAdapter);
Tôi đã thử sử dụng mọi thứ như notifyItemChanged(oldPosition)
nhưng vẫn không có kết quả mong muốn.!
Vui lòng đề xuất cho tôi một cách thích hợp để giải quyết vấn đề này? Tôi mới dùng Android và tôi có một suy nghĩ để có được cái nhìn của mục cuối cùng và lưu nó trước sau đó tôi nhận được rằng xem và thiết lập mặc định hình ảnh chơi trên nút danh sách trước đó của tôi nhưng tôi không biết làm thế nào để làm điều này?
đây là mã của tôi về Bộ điều hợp tùy chỉnh.!
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
private List<Animal> AnimalList;
public Context ctx;
public static int postionchange=-1;
public static Tab1Birds t1;
final int[] countLike = {0};
//public static MediaPlayer mediaPlayer2 = new MediaPlayer();
int pos=0;
public class MyViewHolder extends RecyclerView.ViewHolder {
public ImageView display;
public TextView nameTextView;
public ImageButton play,options,menubtn;
public MyViewHolder(View view) {
super(view);
nameTextView = (TextView) view.findViewById(R.id.nameTextView);
play=(ImageButton)view.findViewById(R.id.playbtn);
options=(ImageButton)view.findViewById(R.id.menubtn);
display=(ImageView)view.findViewById(R.id.imageview);
menubtn = (ImageButton) view.findViewById(R.id.menubtn);
//MediaPlayerClass.mediaPlayer= new MediaPlayer();
}
}
public CustomAdapter(List<Animal> moviesList,Context ct) {
this.AnimalList = moviesList;
this.ctx=ct;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_list, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
final Animal animal = AnimalList.get(position);
final int[] previous = {position};
holder.nameTextView.setText(animal.getName());
holder.display.setImageResource(animal.getImageResource());
//////////////////////////////////////////////////////////////////////////////////////////////////////////
holder.options.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (MediaPlayerClass.mediaPlayer.isPlaying()) {
holder.play.setBackgroundResource(R.drawable.play_btn);
MediaPlayerClass.mediaPlayer.stop();
}
} catch (Exception ex) {
}
Dialog dialog;
final String[] items = {"SET AS RING TUNE", "SET AS MESSAGE TUNE", "SET AS ALARM TUNE"};
final ArrayList itemsSelected = new ArrayList();
final AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle("OPTIONS");
builder.setMultiChoiceItems(items, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int selectedItemId,
boolean isSelected) {
if (isSelected) {
itemsSelected.add(selectedItemId);
} else if (itemsSelected.contains(selectedItemId)) {
itemsSelected.remove(Integer.valueOf(selectedItemId));
}
}
})
.setPositiveButton("Done!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Toast toast = Toast.makeText(ctx, "successfully selected", Toast.LENGTH_SHORT);
toast.show();
SparseBooleanArray CheCked = ((AlertDialog) dialog).getListView().getCheckedItemPositions();
String str = "";
if (CheCked.get(0)) {
savering(animal.getSoundResource());
}
if (CheCked.get(1)) {
savemsg(animal.getSoundResource());
}
if (CheCked.get(2)) {
savealarm(animal.getSoundResource());
}
// if (CheCked.get(3)) {
// DatabaseHelper.save_bookmarks(itemsList.get(position).getitemName(), R.drawable.play_btn, itemsList.get(position).getItemTuneSt());
// Toast.makeText(ctx, "Item added to favourites", Toast.LENGTH_SHORT).show();
// }
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
}
});
dialog = builder.create();
dialog.show();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
});
pos=position;
// for animation
// ///////////////////////////
//animate(holder);//Function for animation
//////////////////////////////
holder.play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(postionchange==-1)
{
postionchange=position;
}
if(postionchange!=position)
{
holder.play.setBackgroundResource(R.drawable.play_btn);
}
holder.play.setBackgroundResource(R.drawable.pause_btn);// present state
MediaPlayerClass.play(animal.getSoundResource(),ctx);
if(countLike[0] ==0)
{
countLike[0] =1;
}else if(countLike[0] ==1)
{
//if is playing then Pause
if(MediaPlayerClass.mediaPlayer.isPlaying())
MediaPlayerClass.mediaPlayer.stop();
t1.recyclerView.setAdapter(null);
t1.customAdapter=new CustomAdapter(t1.animalList,ctx);
t1.recyclerView.setAdapter(t1.customAdapter);
holder.play.setBackgroundResource(R.drawable.play_btn); //sound stop show play button
countLike[0] =2;
}
if(countLike[0] >1)
{
countLike[0] =0;
holder.play.setBackgroundResource(R.drawable.play_btn); // click to play music, click again to stop music
}
//setOnCompletionListener
MediaPlayerClass.mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
holder.play.setBackgroundResource(R.drawable.play_btn);
}
});
// MediaPlayerClass.mediaPlayer.start();
}
});
}
@Override
public int getItemCount() {
return AnimalList.size();
}
//animation
public void animate(RecyclerView.ViewHolder viewHolder) {
final Animation animAnticipateOvershoot = AnimationUtils.loadAnimation(ctx, R.anim.bounce_interpolator);
viewHolder.itemView.setAnimation(animAnticipateOvershoot);
}
//////////////////////////////////////////////////////////////////////////////////////////
}
Dưới đây là một ví dụ về Máy nghe nhạc Trong Samsung Điện thoại di động.! Khi nào tôi chơi nhạc, nó sẽ hiển thị hình động và khi tôi phát bài hát tiếp theo, nó sẽ phát bài hát đó và dừng phát nhạc trước đó và hoạt ảnh của nó. Tôi biết cách dừng trình phát phương tiện nhưng cách thay đổi dừng lại là hoạt ảnh hoặc thư viện nhạc, v.v.?
Bạn có thể cho chúng tôi một số mã không? Tôi đoán chúng tôi không thể giúp đỡ nếu không nhìn vào những gì bạn đang làm. – Jay
@Đã thêm mã.! có một cái nhìn vào nó.! –
Tôi đang tìm ai đó để trả lời nó.! –