3

私のレイアウトはこんな感じです

<ParentLinearlayout>
    <ChildLinearlayout>
       <Button>
    </ChildLinearlayout>
    <ChildLinearlayout>
       <Button>
    </ChildLinearlayout>
</ParentLinearlayout1>

ChildLinearlayout の数を動的に変更、追加、削除します。

ボタンがクリックされたときに、Button の親である ChildLinearlayout を削除したいと考えています。

しかし、インデックスの線形レイアウトはわかりません。インデックスは頻繁に変更されるため、タグを使用できません。

LinearLayout インデックスを知るには?

4

4 に答える 4

5
int index = linearLayout.indexOfChild(view);
linearLayout.removeViewAt(index);
于 2015-06-02T19:56:42.243 に答える
1

別のより堅牢な方法は、親に追加するときに各子にタグを割り当てることです。

View child = // TODO
child.setTag("child" + i);
parent.addView(child);

そして、findViewByTag() を使用して再度検索します。

parent.removeView(parent.findViewByTag("child4"));
于 2013-03-25T01:43:14.730 に答える
0
public void showListofData() {
    if (linearlayout.getChildCount() > 0) {
        linearlayout.removeAllViews();
    }
    for (int i = 0; i < mylist.size(); i++) {
        LayoutInflater inflater = null;
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View mLinearView = inflater.inflate(
                R.layout.row, null);

        TextView cName = (TextView) mLinearView
                .findViewById(R.id.txt_name);
        clinicName.setText(mylist.get(i).name);
        mLinearView.setTag(mylist.get(i));
        linearlayout.addView(mLinearView);

        mLinearView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
             int pos=(Integer)v.getTag();

            }
        });
    }
}
于 2015-06-30T11:05:34.983 に答える
0
parent.removeView((View)button.getParent());

ただし、これはビュー階層に大きく依存するため、注意してください。

于 2013-03-25T01:40:12.297 に答える