Android以编程方式在linearlayout中添加和删除textview

时间:2013-05-29 05:00:45

标签: android textview

我正在尝试在线性布局中添加视图(TextView)。我能够以编程方式在linearlayout中添加textview。

以下是添加textview的代码:

public void setSelectedContactTextView(final ArrayList<Object> list){
        //Constants.progressDialog=ProgressDialog.show(this, "", Constants.MSG_PROGESSDIALOG);
        /*  new Thread(new Runnable() {

            @Override
            public void run() {*/
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                while(i<list.size()){
                    ContactBean contactBean=(ContactBean)list.get(i);
                    if(contactBean.isSelected()==true){
                        View line = new View(NewEventShowDetails.this);
                        line.setLayoutParams(new LayoutParams(1, LayoutParams.WRAP_CONTENT));
                        final TextView contactTextView=new TextView(NewEventShowDetails.this);
                        contactTextView.setText(contactBean.getEmailId().toString());
                        contactTextView.setPadding(3,3, 3, 3);
                        contactTextView.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Toast.makeText(NewEventShowDetails.this, contactTextView.getText(), Toast.LENGTH_SHORT).show();
                            }
                        });
                        fbContactTextLinearLayout.addView(contactTextView);
                        fbContactTextLinearLayout.addView(line);
                        count++;
                    }
                    i++;
                }
            }
        });

        /*}
        });*/
    }

我在Activty中从OnResume()调用setSelectedContactTextView()。它首次在活动中添加了文本视图,但在调用removeAllTextViewsFromLayout()之后,它将不会再次添加文本视图。

以下是删除textview的代码:

public void removeAllTextViewsFromLayout(){
        final int childcount = fbContactTextLinearLayout.getChildCount();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                for (int i=0; i < childcount; i++){
                    fbContactTextLinearLayout.removeViewInLayout(fbContactTextLinearLayout.getChildAt(i));
                }
            }
        });
    }

这是在OnCreate()

中定义的
fbContactTextLinearLayout=(LinearLayout)findViewById(R.id.fbcontact_text_layout);

1 个答案:

答案 0 :(得分:1)

您的i计数器是否被重置?基于您显示的代码,我不是局部变量。

runOnUiThread(new Runnable() {
        @Override
        public void run() {
            while(i<list.size()){

如果您没有重置i,您的循环将不会第二次运行(假设列表中没有添加任何内容)。