Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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_Android Listview_Android Progressbar - Fatal编程技术网

Android 进度可见性在列表视图页脚中不起作用

Android 进度可见性在列表视图页脚中不起作用,android,android-listview,android-progressbar,Android,Android Listview,Android Progressbar,我在列表视图中使用分页,当用户向下滚动到列表视图的末尾时,我在列表视图的页脚中显示一个进度条(小) LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.list_footer, null); myListView.addFooter(view). 然后

我在列表视图中使用分页,当用户向下滚动到列表视图的末尾时,我在列表视图的页脚中显示一个进度条(小)

LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.list_footer, null);    
myListView.addFooter(view).
然后,我按照如下方式设置适配器

ProgressBar progressBar = (ProgressBar) getFooterView().findViewById(R.id.progressBar);
mAdapter = new MyAdapter(BaseActivity.getActivity(), 0, progressBar, myArrayList);
mList.setAdapter(mAdapter);
在我的适配器类中,我在getView()方法中设置进度条可见性,如下所示

 if(position == MAX_RECORDS)
    {
        progressBar.setVisibility(View.VISIBLE);
        // Some code goes here.
    } else
        progressBar.setVisibility(View.GONE);
但当列表没有数据可获取时,ProgressBar不会消失。请帮帮我。

试试:

if(position == MAX_RECORDS-1)
位置以0开头

更新

在这里尝试理解您的代码:

if(position == MAX_RECORDS-1) 
    { 
        progressBar.setVisibility(View.VISIBLE);
        // Some code goes here. 
    }
当显示最后一行时,将执行上面的块。由于之前对所有行都调用了getview,并且希望您使用的是convertview,因此不会再次执行else块

最终结果是:对话框将无限期可见

如果我是对的,您希望在加载数据时显示该对话框,并在加载完成时隐藏该对话框。有两种情况:

  • 您可以一次获取数据
  • 在显示最后一行时获取数据

你能解释一下上面哪一条是正确的吗?

最初将progressBar设置为可见状态,并使用相同的代码本身。

试试这一条。这一行的更改将对你有所帮助

ProgressBar progressBar = (ProgressBar)view.findViewById(R.id.progressBar);
而不是

ProgressBar progressBar = (ProgressBar) getFooterView().findViewById(R.id.progressBar);

嘿@Kay谢谢,我使用的是MAX_RECORDS-1,刚刚忘记发布,你对这个问题有什么其他想法吗。在我的情况下,最后一个是真的,我在显示最后一行时获取数据,所以如果每次调用获取20条记录,那么MAX_RECORDS应该是20条,然后是40条,然后是60条,如果MAX_RECORDS正在更新,这意味着当没有数据获取时,进程将不会消失。示例:如果您提取80-100条记录,这是最后一条记录,那么on(position==99)progressdialog将可见,并且不再有进一步的getview调用,因此将永远不会不可见。要克服这一问题,您需要获得服务器上数据的实际最大计数,即上面示例中的100。或者,当服务器不再返回要获取的数据时,隐藏progressI,我认为这是使用此方法的最佳解决方案<代码>mListView.removeFooterView(v)。和删除页脚视图。感谢您的解决方案,但这也不起作用。请尝试从适配器类中设置接口调用活动,然后将可见性设置为可见。。。