我试图以实用的方式在linearlayout中添加views(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++;
                }
            }
        });

        /*}
        });*/
    }


我在活动中从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);

最佳答案

您的i计数器是否已重置?根据您显示的代码,我不是局部变量。

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


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

关于android - Android以编程方式在linearlayout中添加和删除textviews,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16805831/

10-09 07:24
查看更多