当从XML ImageView中使用findViewById时,在Java代码中使用View是否有任何好处?



我正在编写代码,在XML中我使用ImageViews和偶尔的TextViews作为按钮。我不需要做任何事情与他们除了setOnClickListeners在我的Java代码,所以我想知道是否有任何好处离开他们作为视图对象在Java中,而不是将他们投射到ImageView或TextView对象。

 private ImageView mPlayButton;
 mPlayButton = (ImageView) findViewById(R.id.playButton);
 mPlayButton.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Toast.makeText(MainActivity.this, "Audio Play", Toast.LENGTH_SHORT).show();
     }
 });

相对
private View mCurrentSongButton;
mCurrentSongButton = findViewById(R.id.currentSongIcon);
mCurrentSongButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, SongInfo.class);
        startActivity(intent);
    }
});

感谢你的帮助。

没有必要为了设置OnClickListener而将View强制转换为ImageView。将对象转换为不同的类不会改变对象的类,即ImageView对象在转换为View甚至Object时仍将保持ImageView。因此,无论对象本身的引用包装器是什么,都可以调用相同的方法。

将任何对象强制转换为子类的目的应该只是为了解锁其他不可用的方法。因此,如果您需要调用专用于ImageView的任何方法,则需要事先将其强制转换为ImageView(但只有这样才能将该方法强制转换为call or use)。

简而言之,如果不需要调用特定于子对象的方法,那么就不要强制转换对象,这只是编译器的开销。

如果你只需要设置点击监听器,那么视图类型就足够了,但如果你需要特殊的操作,如setText(), setEnabled()等,那么你需要转换它们

相关内容

最新更新