【问题标题】:How to call method stopAnimator() from onCreate() in activity?The stopAnimator() is present in the recyclerViewHolder class如何在活动中从 onCreate() 调用方法 stopAnimator()? stopAnimator() 存在于 recyclerViewHolder 类中
【发布时间】:2015-02-22 04:24:06
【问题描述】:

在活动的onCreate()方法中代码如下所示。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recording_list);
  tplay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(),"play",Toast.LENGTH_SHORT).show();
                if(mp.isPlaying()){
                    tplay.setImageResource(android.R.drawable.ic_media_play);
                    mp.pause();

                }else {
                    mp.start();
                            //Here i want to call method which is present in recycler view holder.The Method is stopAnimator() from my viewholder class
                }



            }
        });

MyViewHolder 类在 MyAdapter 类中(MyViewHolder 是 MyAdapter 的内部类,MyAdapter 是活动的内部类)。适配器类代码如下:

private class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private final List<String> recordList;

    public MyAdapter(List<String> recordList) {
        this.recordList=recordList;


    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View itemLayoutView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.song_item, null);
        MyViewHolder myViewHolder= new MyViewHolder(itemLayoutView);
        return myViewHolder;

    }

    @Override
    public void onBindViewHolder(MyViewHolder viewHolder,int i) {
        viewHolder.txtViewTitle.setText(recordList.get(i));

        /***
         * 2nd method to use the onclick listener on Recycler view
         */
        /*viewHolder.txtViewTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(),""+recordList.get(i),Toast.LENGTH_SHORT).show();
                try {
                    mp.reset();
                    mp.setDataSource(SD_PATH + Recording.get(i));
                    mp.prepare();
                    mp.start();
                } catch (Exception e) {

                    e.printStackTrace();
                }

            }
        });*/
    }

    @Override
    public int getItemCount() {
        return recordList.size();
    }


    class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        //If u have any other view like layout or button get refrence of that and implement the on click listener on that
        public TextView txtViewTitle;
        public EqualizerView equalizer;

        public MyViewHolder(View itemView) {
            super(itemView);
            txtViewTitle = (TextView) itemView.findViewById(R.id.text1);
            equalizer = (EqualizerView) itemView.findViewById(R.id.equalizer_view);
            txtViewTitle.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),""+recordList.get(getPosition()),Toast.LENGTH_SHORT).show();
            try {
                mp.reset();
                mp.setDataSource(SD_PATH + Recording.get(getPosition()));
                mp.prepare();
                mp.start();
                if(mp.isPlaying()){
                    tplay.setImageResource(android.R.drawable.ic_media_pause);
                    equalizer.setVisibility(View.VISIBLE);
                    equalizer.animateBars(); // Whenever you want to tart the animation

                }
            } catch (Exception e) {

                e.printStackTrace();
            }



        }



        public void stopAnimator() {
            if (equalizer.isAnimating()){
                equalizer.stopBars();
            }
        }
    }

}

谁能帮帮我..!!!!!!。 我在 MyViewHolder 类中编写的方法是 stopAnimator(),如上面的代码所示。该方法用于停止均衡器。我想从 tplay onclickListener 的活动中调用此方法。我怎样才能实现这一点?均衡器是我从库 Mini Equalizer Library 中使用的自定义视图。

【问题讨论】:

  • 可能在 onCreate 方法中创建MyViewHolder 类的对象?然后使用对象调用stopAnimator方法
  • 它不工作。我的错误我忘了提到 ViewHolder 类是 MyAdapter 的内部类。编辑了问题。

标签: android oop android-5.0-lollipop android-recyclerview


【解决方案1】:

你可以从类中创建对象,然后你可以调用类中的任何方法

MyViewHolder  objView=new MyViewHolder (Your_View);
    objView.stopAnimator() ;

【讨论】:

  • 它给了我错误“com.playAndRecord.eletanpuratabla.RecordingListActivity.MyAdapter 不是封闭类”。实际上是 MyAdapter 的 MyViewHolder 内部类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多