AMcoder - javascript, python, java, html, php, sql

android. ստեղծել փոփոխականների անուններ ծրագրային կերպով վերամշակման դիտման համար

Ես ունեմ recyclerview՝ 10 տարրով, որոնցից յուրաքանչյուրն ունի աուդիո ֆայլ:

Ես ուզում եմ ստեղծել mediaplayer փոփոխականներ իրենց անուններով, ինչպիսիք են media1, media2 .... media[recyclerview-ի տարրերի ընդհանուր թիվը]

ապա onBindview-ում ես ուզում եմ օգտագործել դիրքին համապատասխան փոփոխականների անուններ:

public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {

    mp = media+"position"
    mp = MediaPlayer.create(viewHolder.itemView.getContext(), Uri.parse(context.getExternalFilesDir("krishna").getPath() + "/" + planDetailLists.get(i - 2).placechildplaces_audiodetailfilename));
    mp.start();
    }

Ինչու ես դա անում եմ այն ​​է, որ ես ուզում եմ, որ յուրաքանչյուր տարր հիշի իր մեդիա նվագարկիչի փոփոխականը, որպեսզի ես կարողանամ խաղալ միայն տվյալ աուդիո ֆայլի դադարը, այլ ոչ մյուս տարրերի աուդիո ֆայլը:

Այլապես այն, ինչ ես գտել եմ, այն է, որ այլ նյութի աուդիո նվագարկվում է, երբ ես սեղմում եմ մեկ այլ նյութի նվագարկման կոճակը: Եթե ​​ես դադարեցնեմ տարրերը[1[ աուդիոը և նվագարկեմ մյուս տարրերը[2] աուդիոն, այն շարունակում է նյութի[1] ձայնը իր դադարի դիրքից:

Ես չեմ կարողանում կառավարել յուրաքանչյուր տարրի աուդիո ֆայլերը: ամեն ինչ խառնվում է.


  • Կատարեք որպես String.valueOf(position); 06.06.2016
  • իրականում ինչի՞ եք ուզում հասնել: 06.06.2016
  • կամ կա՞ միջոց՝ հետևելու մեդիա նվագարկիչի օրինակին տվյալ նյութի համար 06.06.2016
  • Ձեզ անհրաժեշտ է միայն մեկ MediaPlayer օրինակ, ինչո՞ւ եք յուրաքանչյուր տարրի համար ստեղծում նոր MediaPlayer: 06.06.2016
  • օրինակ mp = Mediaplayer.create ... ստեղծում է փոփոխական Mediaplayer@83439893847-ով: Այսպիսով, ինչպես փրկել այդ օրինակը: որպեսզի նորից զանգեմ 06.06.2016
  • վերագրել այն ինչ-որ դասի դաշտում 06.06.2016
  • Եկեք այս քննարկումը շարունակենք զրուցարանում: 06.06.2016

Պատասխանները:


1

Ինչու եք ուզում այն ​​ընդունել որպես դինամիկ փոփոխական, երբ դուք հեշտությամբ կարող եք դա անել մեդիա նվագարկչի զանգվածով:

Պարզապես հայտարարեք զանգվածի մեկ փոփոխական Mediaplayer-ի համար, այնուհետև, երբ տվյալ պահին տվյալներ ստանաք, սկզբնավորեք այն և այնուհետև դիտորդում օգտագործեք այն:

 MediaPlayer allMPlayers[];

Տվյալները ստանալուց հետո նախաստորագրեք դրանք որպես,

 allMPlayers = new MediaPlayer[list.size()]; 

այժմ օգտագործեք պահարանում, ինչպես ստորև,

 public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {

      mp = allMPlayers[position];
      mp = MediaPlayer.create(viewHolder.itemView.getContext(), Uri.parse(context.getExternalFilesDir("krishna").getPath() + "/" + planDetailLists.get(i - 2).placechildplaces_audiodetailfilename));
      mp.start();
 }
06.06.2016
  • Ես ունեմ խաղալ/դադար կոճակ իմ տարրի վրա: Յուրաքանչյուր տարր կունենա տարբեր աուդիո ֆայլ: Ես ուզում եմ, որ աուդիոն դեռ նվագարկվի, եթե վերադառնամ: Այսպիսով, ինչպես անդրադառնալ mediaplayer փոփոխականին, որն արդեն աշխատում է, երբ ես վերադառնամ այս աուդիո ցանկի էջին 07.06.2016

  • 2

    Դրա համար ամենահեշտը HashMap<String, MediaPlayer>-ն օգտագործելն է: Այսպիսով, դուք կարող եք տեղադրել/ստանալ մեդիա նվագարկիչը քարտեզից իր լարային անունով:

    Խմբագրել՝

    Կամ հիշեք MediaPlayer օրինակը ձեր RecyclerView.ViewHolder իրականացման մեջ: Բայց զգուշացեք սեփականատերերի վերամշակումից:

    Խմբագրել 2:

    MediaPlayer օրինակը դիտման պահարանում հիշելու համար դուք այն կպահեք onBindViewHolder մեթոդով: Օրինակ:

    public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
        // First cast to your view holder implementation which has a public instance variable MediaPlayer mediaPlayer;
        // Just for easy access of instance variables
        MyViewHolder holder = (MyViewHolder)viewHolder;
    
        if (holder.mediaPlayer == null) {
            // If there is no MediaPlayer on this view holder create a new one.
            holder.mediaPlayer = MediaPlayer.create(viewHolder.itemView.getContext(), Uri.parse(context.getExternalFilesDir("krishna").getPath() + "/" + planDetailLists.get(i - 2).placechildplaces_audiodetailfilename));
            mp.start();
        }
        else {
            // Stop playing this media player...
    
            // Re-use the current media player or create a new one...
    
            // Now play the new sound with similar code as in the IF branch above...
        }
    }
    
    06.06.2016
  • Ինչպես հիշել MediaPlayer-ի օրինակը 07.06.2016
  • ես փորձեցի խմբագրել 2. Ես ունեմ խաղալ/դադար կոճակ իմ յուրաքանչյուր տարրի վրա: Ես տարբեր աուդիֆայլեր ունեմ տարբեր իրերի խաղալու համար: Այս մոտեցումը ստեղծեց նոր Mediaplayer առաջին կետի համար, երբ սեղմում եմ խաղալ, բայց երկրորդ կետի համար, երբ ես սեղմում եմ խաղալ: այն շարունակում է նվագարկել առաջին մեդիա նվագարկիչը՝ նույն աուդիո ֆայլը, նորը ստեղծելու փոխարեն: 07.06.2016
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..