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

时间:2015-07-30 08:50:24

标签: 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).

然后我按如下方式设置我的适配器

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不会消失。请帮帮我。

3 个答案:

答案 0 :(得分:0)

尝试:

if(position == MAX_RECORDS-1) 
    { 
        progressBar.setVisibility(View.VISIBLE);
        // Some code goes here. 
    }

位置从0开始

<强>更新

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

public static Date getDateChanged(Date date, int field, int value) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int maximum = calendar.getActualMaximum(field);
    if (value > maximum) {
        value = maximum;
    }
    cal.set(field, value);
    return cal.getTime();
}
当显示最后一行时,

上面的块将被执行。因为之前调用了所有行的getview,并且希望你使用的是convertview,所以else块不会再被执行。

净结果是:对话框将无限期可见。

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

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

你能否解释一下上述哪一个是真的?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

试试这个。这一行的改变会帮助你

/// this code gets executed repeatedly
        starNode.physicsBody?.velocity = SCNVector3Zero
        applyForce() ///always the same
        starNode.eulerAngles = SCNVector3Make(0, Float(90*(M_PI)/180.0), 0)
        starNode.position = SCNVector3Make(-0.562, 5.578, -18.529)

而不是

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