2014-12-06 113 views
2

我正在开发一个android日历应用程序,它在listview中显示日期。我能够在向下滚动的同时将数据添加到列表视图中。现在我想在滚动时做同样的事情。我怎样才能将数据添加到列表视图的顶部,并滚动列表视图的第一个数据?如何在列表视图的顶部添加添加数据

这是我的代码。

public class AllEventFragment extends Fragment{ 
private final int INITIAL_DAYS = 14; 

private final int THRESHOLD = 14; 
private int currentPage = 0; 
private int previousTotal = 0; 
private boolean loading = true; 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    mListView = (ListView) getView().findViewById(R.id.list); 

    mListView.setOnScrollListener(new AbsListView.OnScrollListener() { 
     private int mLastItem; 

     @Override 
     public void onScrollStateChanged(AbsListView absListView, int i) { 

     } 

     @Override 
     public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, 
     int totalItemCount) { 

      if (loading){ 
       if (totalItemCount > previousTotal){ 
        loading = false; 
        previousTotal = totalItemCount; 
        currentPage++; 
       } 
       if(totalItemCount < totalItemCount){ 
        loading = false; 
        previousTotal = totalItemCount; 
        currentPage++; 
       } 
      } 
      if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + THRESHOLD)){ 
       addMoreDaysToBottom(currentPage + 1); 
       loading = true; 
      } 
      } 

回答

0

使用Vector来存储项目。

实现ListAdapter,它返回Vector中的项目。

当你需要在顶部添加一个项目,请将其作为矢量

的第一个元素刷新的ListView的适配器

+0

我已经做到了,并已经能够添加数据,同时滚动向下(但并未将该部分代码添加到上面显示的代码段中)。我现在的问题是当用户尝试超出ArrayList中的第一个元素时,如何以编程方式将数据添加到列表顶部。换句话说,这与我已经完成的工作相反。 – user2890137 2014-12-06 16:08:45

+0

你的意思是像Facebook应用程序的拉到刷新效果? – 2014-12-06 16:10:40

+0

实际上并没有真正拉动刷新效果。一个关闭的例子是WhatsApp聊天listView中的“加载早期消息”。由于我的日历应用程序,当用户尝试超出阵列列表中的第一个初始化元素(即今天的日期)时,前几天的日期将被添加到listView。我如何确定用户何时试图通过ScrollListener超越数组列表的第一个元素。 – user2890137 2014-12-06 16:23:54

相关问题