हैलो लोग आशा करते हैं कि आप सभी ठीक हैं। मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं जो जानवरों की विभिन्न आवाज़ें बजाएगा।रीसायकल व्यू के पिछले आइटम पंक्ति दृश्य के दृश्य को रीफ्रेश करने के लिए कैसे करें
मैं रीसायकल व्यू का उपयोग कर रहा हूं जैसा कि आप नीचे स्क्रीनशॉट में देख सकते हैं। अब मुझे एक समस्या का सामना करना पड़ रहा है, मेरे पास मेरी पंक्ति के अंदर एक प्ले बटन है जो कि जब भी मैं अपने आइटम 0 से ध्वनि बजाता हूं या किसी भी स्थिति में यह ध्वनि की आवाज बजा रहा है, तो यह मुझे दृश्य के अंदर विकल्प रोकता है। लेकिन जब भी मैं अगले आइटम 1 या किसी अन्य पर क्लिक करता हूं तो यह पिछले आइटम की छवि को नहीं बदल रहा है 0.
मैं निम्नलिखित कोड का उपयोग कर एडाप्टर की अपनी सूची को रीफ्रेश करके कर रहा हूं। लेकिन मुझे लगता है कि यह एक अच्छा अभ्यास नहीं है।
t1.recyclerView.setAdapter(null);
t1.customAdapter=new CustomAdapter(t1.animalList,ctx);
t1.recyclerView.setAdapter(t1.customAdapter);
मैं notifyItemChanged(oldPosition)
की तरह हर चीज उपयोग करने की कोशिश, लेकिन अभी भी havent मेरी वांछित परिणाम मिल गया।!
कृपया मुझे हल करने का एक उचित तरीका सुझाएं? मैं एंड्रॉइड के लिए नया हूं और मेरे पास पिछले आइटम को देखने और इसे पहले सहेजने के लिए एक विचार है, तो मुझे वह दृश्य मिलता है और मेरे पिछले सूची बटन पर डिफ़ॉल्ट छवि प्ले सेट करता है लेकिन मुझे नहीं पता कि यह कैसे करें?
यहां कस्टम एडाप्टर का मेरा कोड है!
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);
}
//////////////////////////////////////////////////////////////////////////////////////////
}
यहाँ संगीत खिलाड़ी का एक उदाहरण सैमसंग मोबाइल्स में है।! जब भी मैं संगीत बजाता हूं तो यह एनीमेशन दिखाता है और जब मैं अगला गीत चलाता हूं तो वह उस गीत को चलाता है और पिछले बजाने वाले संगीत और इसकी एनीमेशन को रोकता है। मुझे पता है कि मीडिया प्लेयर को कैसे रोकें, लेकिन एनीमेशन या संगीत लाइब्रेरी इत्यादि को कैसे रोकें?
क्या आप हमें कुछ कोड के साथ साबित कर सकते हैं? मुझे लगता है कि हम जो भी बना रहे हैं उसे देखे बिना हम आपकी मदद नहीं कर सकते हैं। – Jay
@Jay कोड जोड़ा गया। इस पर एक नज़र डालो।! –
मैं इसे उत्तर देने के लिए किसी के लिए खोज रहा हूँ। –