每次图像在runnable中更改时,自动水平滚动textview都会初始化

时间:2017-03-04 03:10:42

标签: java android firebase textview

我开发了一个应用程序,其中我有一个textview,其文本自动滚动。我还有一个imageview,其图像每四秒后自动变化。为了实现这一点,我创建了一个具有4秒时间的新runnable。假设有5个图像显示出来。问题是每次在imageview中加载新图像时,textview的文本都会重置,并且它从头开始滚动,这只发生在所有图像的第一次迭代中。在显示所有图像之后,从下一次迭代开始,textview开始正常运行并且文本不会重置。我不知道是什么问题。这是代码

//In onCreate
headlinesText = (TextView) findViewById(R.id.text_news);
        headlinesText.setSelected(true);


//This is a separate method

public void settingAds() {
        myRef.child("Advertisements").addValueEventListener(new com.google.firebase.database.ValueEventListener() {
            @Override
            public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
                imageUrl.clear();
                for (com.google.firebase.database.DataSnapshot eachAdUrl : dataSnapshot.child("Adurls").getChildren()) {
                    imageUrl.add(String.valueOf(eachAdUrl.getValue()));
                }
                headlineFromFirebase = String.valueOf(dataSnapshot.child("News").getValue());
                adTimer = (long) dataSnapshot.child("Time").getValue();
                headlinesText.setText(headlineFromFirebase);

                /*headlinesText.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        startActivity(new Intent(MainActivity.this, NewsList.class));
                    }
                });*/

                //Randomly shuffling the array list
                Collections.shuffle(imageUrl);

                for(int i=0;i<imageUrl.size();i++) {
                    Picasso.with(MainActivity.this)
                            .load(imageUrl.get(i))
                            .fetch();
                }
                //runnable code was here
                if(handler != null) {
                    handler.removeCallbacks(runnable);
                }
                handler = new Handler();
                runnable = new Runnable() {
                    int imageCounter=0;
                    public void run() {
                        Picasso.with(MainActivity.this)
                                .load(imageUrl.get(imageCounter))
                                .fit()
                                .centerCrop()
                                .into(mAdsView);
                        imageCounter++;
                        if (imageCounter > imageUrl.size()-1) {
                            imageCounter = 0;
                        }
                        handler.postDelayed(this,adTimer);
                    }
                };
                handler.postDelayed(runnable, 250);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

0 个答案:

没有答案