0

レイアウトをに追加した後、ScrollViewビューを削除したかったのですが、最初のビューだけが削除されます。LinearLayoutLinearLayout

私が試してみましたparent.removeView(myView)

レイアウトを追加するための私のコード:

LayoutInflater inflater = getLayoutInflater();

final View view_top = inflater.inflate(R.layout.layout_top, linear_layout,false);
final View view_bottom = inflater.inflate(R.layout.layout_bottom,linear_layout,false);


final RelativeLayout rel_layout_bottom = (RelativeLayout) view_bottom.findViewById(R.id.relative_bottom);

Button btn_update = (Button) rel_layout_bottom.findViewById(R.id.lst_todo_update);

ImageButton btn_remove = (ImageButton) rel_layout_bottom.findViewById(R.id.lst_btn_delete);

ImageButton btn_Color = (ImageButton) rel_layout_bottom.findViewById(R.id.lst_btn_color);


final RelativeLayout rel_layout_top = (RelativeLayout) view_top.findViewById(R.id.relative_top );
final TextView note_Title = (TextView) rel_layout_top.findViewById(R.id.lst_title );
final TextView note_color = (TextView) rel_layout_top.findViewById(R.id.lst_color_type );

note_Title.setText(note_title);

linear_layout.addView(rel_layout_bottom, 0);


JSONArray jsonArray=queryResult.getResultObjects().get(count).getJSONArray("todo_item");

for (int i = 0; i < jsonArray.length(); i++) {


    final View view_middle  = inflater.inflate(R.layout.layout_middle, linear_layout, false);

    final RelativeLayout rel_layout_middle = (RelativeLayout) view_middle.findViewById(R.id.relative_middle);

    final CheckBox note_check ;

    final TextView note_content ;

    note_content = (TextView) rel_layout_middle.findViewById(R.id.lst_content);
    note_check = (CheckBox) rel_layout_middle.findViewById(R.id.lst_check);
    btn_remove.setOnClickListener(null);
    try {

        //Getting data correctly here

        linear_layout.addView(view_middle,0);

        btn_remove.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {               

               linear_layout.removeView(view_middle);        //Not able to remove the view here i.e view_middle
               linear_layout.removeView(view_top);
               linear_layout.removeView(view_bottom);

            }
        }); 


    } catch (JSONException e) {

        e.printStackTrace();
    }

}

linear_layout.addView(rel_layout_top , 0);

}

どんな答えでも感謝します...ありがとう

4

2 に答える 2

0

以下のようなものがあなたの問題を解決します。

final View[] view_middleArr;
for (int i = 0; i < jsonArray.length(); i++) {
    view_middleArr = new View[jsonArray.length()];
    view_middleArr[i]  = inflater.inflate(R.layout.layout_middle, linear_layout, false);
    // ...

        btn_remove.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {               

                for (View view_middle : view_middleArr) {
                     linear_layout.removeView(view_middle);  
                }                           
               linear_layout.removeView(view_top);
               linear_layout.removeView(view_bottom);
            }
        }); 
}

編集:ループ内view_middleのすべてのインスタンスに同じ参照を使用しているため、コードで最後のインスタンスのみを削除できます。view_middleview_middle

于 2013-11-06T13:45:22.223 に答える