我正在尝试在线性布局中添加视图(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);
答案 0 :(得分:1)
您的i计数器是否被重置?基于您显示的代码,我不是局部变量。
runOnUiThread(new Runnable() {
@Override
public void run() {
while(i<list.size()){
如果您没有重置i,您的循环将不会第二次运行(假设列表中没有添加任何内容)。