Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用户界面不';在安卓系统中,有时无法更新_Android_User Interface_Scrollview - Fatal编程技术网

Android 用户界面不';在安卓系统中,有时无法更新

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

我试图在通过REST服务获取的UI中填充数据。数据每次都会出现,但UI有时不会填充。UI类似于列表,但未使用listview。有一个滚动视图,它的子视图是LinearLayout,然后将行视图添加到LinearLayout。有时,即使将数据传递给用户界面,用户界面也不会得到更新

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。这会成为一个问题吗?