我试图以实用的方式在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/