2017-09-15 11 views
1

Sonar Lintは、パラメータを再利用する代わりに新しい変数を導入するべきだと指摘します。Androidのウィジェットと変数を再割り当てしないでください

私が持っている私のextendedListViewアダプタで

@Override 
    public View getGroupView(... , View convertView , ...){ 
    if(convertView == null){ 
     // gets the layoutInflater 
     convertView = inflater.inflate(R.layout.group_item, parent, false); 
    } 
    // then all the fill the list with data stuff 
    return convertView; 

    } 

ソナーは良い点を作り、私は何かを行う必要がありますが、私はこのような状況で何ができるか分からないと思いました。 convertViewがnullであるか、毎回置き換えるかどうかをチェックする必要がありますが、同時に、エラーはウィジェット内のここにない標準Javaコードでは意味があります。どうすればこの問題を解決できますか?

+0

変数を再割り当てしても置き換えられません。あなたはちょうどそれにポインタを再割り当てしているので、それはあなたに警告しているのです – Kerooker

+0

これはコンパイラがそれをチェックしてから実行時にNPEを持っている可能性があるので、このコード臭がJavaで覚えていますヌルを返していた – h4mme7

答えて

1

実際に現在のコードに間違いはありません。あなたがその警告を回避したい場合は、しかし、あなたはメソッドの引数は最終あるふりをして次の操作を行うことができます...

@Override 
public View getGroupView(... , View convertView , ...){ 
    View myView = convertView; 
    if(myView == null){ 
    // gets the layoutInflater 
    myView = inflater.inflate(R.layout.group_item, parent, false); 
    } 
    // then all the fill the list with data stuff 
    return myView; 
} 

あなたリンターは、コードスタイリングの領域にある何かをマークしています。 PMDも同様のシナリオでコードをマークします。通常、私はgetView(...)メソッドを非常に簡潔にすることを期待していますので、混乱の原因となる変数の再利用は期待できません。

関連する問題