Android 用户界面不';在安卓系统中,有时无法更新
我试图在通过REST服务获取的UI中填充数据。数据每次都会出现,但UI有时不会填充。UI类似于列表,但未使用listview。有一个滚动视图,它的子视图是LinearLayout,然后将行视图添加到LinearLayout。有时,即使将数据传递给用户界面,用户界面也不会得到更新Android 用户界面不';在安卓系统中,有时无法更新,android,user-interface,scrollview,Android,User Interface,Scrollview,我试图在通过REST服务获取的UI中填充数据。数据每次都会出现,但UI有时不会填充。UI类似于列表,但未使用listview。有一个滚动视图,它的子视图是LinearLayout,然后将行视图添加到LinearLayout。有时,即使将数据传递给用户界面,用户界面也不会得到更新 private void showData(List list) { if(list != null && list.isEmpty()) { mNoData.setVisibility(Vi
private void showData(List list) {
if(list != null && list.isEmpty()) {
mNoData.setVisibility(View.VISIBLE);
} else {
mNoData.setVisibility(View.GONE);
final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.details_layout);
findViewById(R.id.details_progress).setVisibility(View.GONE);
linearLayout.removeAllViews();
LayoutInflater layoutInflater = getLayoutInflater();
View rowView = null;
TextView txtName = null;
Button buttonPlay = null;
for (int i = 0; i < list.size(); i++) {
rowView = layoutInflater.inflate(R.layout.row_view, null);
txtName = (TextView) rowView.findViewById(R.id.row_view_name);
buttonPlay = (Button) rowView.findViewById(R.id.row_view_button_play);
final Item item = (Item) list.get(i);
rowView.setTag(i) ;
txtName.setText(item.getName());
final RecentItem recentItem = RecentsManager.getInstance().getRecentItemFromRefID(item.getId());
if (recentItem !=null) {
buttonPlay.setText(getString("Resume"));
buttonPlay.requestFocus();
}
buttonPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (recentItem!=null) {
//do some action
} else {
//do some action
}
finish();
}
});
final int tag = (Integer) rowView.getTag() ;
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do some action
}
}) ;
txtName.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do some action
}
});
buttonPlay.setId(i);
if(i < list.size())
buttonPlay.setNextFocusDownId(i+1);
linearLayout.addView(rowView);
if (i == 0) {
buttonPlay.requestFocus();
buttonPlay.setNextFocusUpId(mButtonReminder.getId());
if(mButtonReminder != null) {
mButtonReminder.setNextFocusDownId(buttonPlay.getId());
}
} else {
buttonPlay.setNextFocusUpId(i-1);
}
}
}
}
private void showData(列表){
if(list!=null&&list.isEmpty()){
mNoData.setVisibility(View.VISIBLE);
}否则{
mNoData.setVisibility(View.GONE);
最终线性布局线性布局=(线性布局)findViewById(R.id.details\U布局);
findViewById(R.id.details\u progress).setVisibility(View.GONE);
linearLayout.removeAllViews();
LayoutInflater LayoutInflater=getLayoutInflater();
视图行视图=空;
TextView txtName=null;
按钮显示=空;
对于(int i=0;i
我甚至检查了linearlayout子项的计数,计数始终等于列表大小,这意味着行也被添加到其中,但它只是没有显示在UI上
可能是什么问题?您正在使用条件
if(list != null && list.isEmpty()) {
mNoData.setVisibility(View.VISIBLE);
}
换成
if(list == null || list.isEmpty()) {
mNoData.setVisibility(View.VISIBLE);
}
我可以通过为scrollview添加fillViewPort=“true”等某些更改来解决此问题。此外,还有一个后台线程试图更新UI,因为该UI线程正在中断。这没有导致崩溃,但UI更新没有发生。有了这两个更改,它工作得很好。我认为在对其实例调用isEmpty方法之前,有必要进行null检查。正如我所说,数据已收到,但只有它在屏幕上不可见。@mobiledev显示您的布局。正如你所说,子视图是在线性布局中添加的,所以我认为布局中存在问题。有人能指出这里的问题是什么吗?有时,需要添加的行数约为400。这会成为一个问题吗?