3

ListViewカスタムアダプターを使用して表示しています。ビューtextViewには、レイアウトにボタンがあります。

何が起こるか->テキストビューをクリックするとすぐonClickに、カスタムアダプタークラスのコールバックがTextView設定され、button_layoutのマージンが設定されます

View button_layout = (((View)(View)v.getParent()).getParent()).findViewById(R.id.button_layout));
MarginLayoutParams margins=(MarginLayoutParams)button_layout.getLayoutParams();
margins.bottomMargin=-100; 

しかし、これは起こっていません。背景色を変更できます。ただし、下マージンを変更することはできません。これcustomadapterは、開示できない大きなコードの一部です。

アプリはクラッシュしませんが、どちらも機能しません。デバッガーでレイアウトのbottomMarginの値が変更されているのを見ると、UIには反映されていません:(コードの一部をここに入れました。onClickListenerが設定されていると仮定します。テキスト ビューをクリックすると、レイアウトの背景色を変更できます。

public class MyCustomAdapter extends ArrayAdapter<someClass> implements OnClickListener{
   public View getView(int position, View convertView, ViewGroup parent) {
       }
        public void onClick(View v){
            View row_to_hide = (((View        ((View)v.getParent()).getParent()).findViewById(R.id.row_to_hide));`
            MarginLayoutParams margins=(MarginLayoutParams)row_to_hide.getLayoutParams();`
              margins.bottomMargin=-100;`
                                        }
   }

私はアンドロイドが初めてで、このアプローチに概念的に何か問題があるかどうか知りたいです。また、textViewボタンはそれぞれ Relative レイアウトと Linear レイアウトにあります。

ボタンを非表示にできるように、ボタンが配置されている線形レイアウトの余白を変更しようとしています。

4

1 に答える 1