`
zhelong111
  • 浏览: 189518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android保存和恢复ListView的滑动后位置

 
阅读更多
package cc.testlistview;
import java.util.ArrayList;
import java.util.HashMap;
import cn.com.bravesoft.testlistviewloadmore.R;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;

/**
* Demo描述:
* 保存和恢复ListView的当前位置
*
* 注意事项:
* onScrollStateChanged()方法中
* v.getTop()方法的文档描述:
* Top position of this view relative to its parent.
*
* 测试方法:
* 1 运行应用,滑动ListView
* 2 ListView停止滑动后,按下back退出应用
* 3 重新进入应用,ListView保持原位置
*/
public class MainActivity extends Activity {
private int position;
private int listViemItemTop;
private ListView mListView;
private SimpleAdapter mSimpleAdapter;
private HashMap<String, Object> mHashMap;
private ArrayList<HashMap<String, Object>> mArrayList;
private final String LISTVIEW_PREFERENCES = "listview_preferences";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}

private void init() {
mListView = (ListView) findViewById(R.id.listView);
mArrayList = new ArrayList<HashMap<String, Object>>();
addDataForListView();
mSimpleAdapter = new SimpleAdapter(
MainActivity.this,
mArrayList,
R.layout.listviewitem,
new String[] { "id" },
new int[] { R.id.textView });
mListView.setAdapter(mSimpleAdapter);
mListView.setOnScrollListener(new OnScrollListenerImple());

}

private void addDataForListView() {
for (int i = 0; i < 20; i++) {
mHashMap = new HashMap<String, Object>();
mHashMap.put("id", "" + i);
mArrayList.add(mHashMap);
}
}

@Override
public void onPause() {
super.onPause();
SharedPreferences mySharedPreferences =
getSharedPreferences(LISTVIEW_PREFERENCES,Activity.MODE_PRIVATE);
SharedPreferences.Editor edit = mySharedPreferences.edit();
edit.putInt("listViemItemTop", listViemItemTop);
edit.putInt("position", position);
edit.commit();
}

@Override
public void onResume() {
super.onResume();
SharedPreferences sharedPreferences =
getSharedPreferences(LISTVIEW_PREFERENCES,Activity.MODE_PRIVATE);
listViemItemTop = sharedPreferences.getInt("listViemItemTop", 0);
position = sharedPreferences.getInt("position", 0);
//reset ListView location
mListView.setSelectionFromTop(position, listViemItemTop);
}

private class OnScrollListenerImple implements OnScrollListener {
@Override
public void onScroll(AbsListView listView, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {

}
      
@Override
public void onScrollStateChanged(AbsListView listview, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
position = mListView.getFirstVisiblePosition();
View itemView = mListView.getChildAt(0);
listViemItemTop = (itemView == null) ? 0 : itemView.getTop();
System.out.println("---> listViemItemTop=" + listViemItemTop);
}
}

}

}
分享到:
评论

相关推荐

    Android listview滑动删除以及view滑动的实现

    在触摸事件处理中,计算手指按下和抬起时的位置差,判断是否达到滑动触发的阈值。如果超过阈值,开始执行删除操作。这里需要注意滑动方向的判断,可以使用`dy &gt; 0`来检查是否为上滑,从而决定是否执行删除动作。 4...

    listview滑动保存选中状态

    然而,在实际应用中,我们经常遇到一个问题:当用户在ListView中滚动时,选中的条目(item)的CheckBox状态无法保持,即“listview滑动保存选中状态”。这个问题主要是由于ListView的复用机制导致的,为了解决这一...

    listview 滑动删除Item

    通过以上步骤,我们就能在Android中实现一个基本的ListView滑动删除功能。不过,需要注意的是,随着Android框架的演进,现在更多地推荐使用RecyclerView,它提供了内置的ItemTouchHelper类,能方便地实现滑动删除等...

    带有listview界面的滑动切换activity

    注意在切换Activity时保持数据的传递和状态的保存,以便在切换回来时能恢复到之前的状态。 在`GestureTest`这个项目中,我们可以推测这是一个测试滑动手势的示例,可能包含了实现上述功能的代码和配置。开发者可以...

    ListView滑动显示删除按钮经行删除

    - 可以添加撤销删除功能,通过使用临时堆栈保存被删除的条目信息,在用户需要时恢复。 - 支持左右滑动显示不同的操作,比如左侧滑动显示编辑按钮,右侧滑动显示删除按钮。 综上所述,实现ListView滑动显示删除按钮...

    在ListView中横向滑动的控件

    - **状态保存和恢复**:如果横向滑动涉及到状态(如ViewPager的当前页),需要考虑在ListView滚动时如何保存和恢复这些状态,以防止滚动过程中状态丢失。 综上所述,实现“在ListView中横向滑动的控件”涉及到对...

    android 仿百度外卖首页滑动

    在这里,开发者可能使用了TabLayout或者自定义的TabView,使得Tab在滑动时能够悬浮显示,并且随着滑动位置改变而动态调整位置。 3. **滑动效果处理**: 实现浮动Tab的关键在于监听ListView的滑动事件。可以使用...

    Android - 动画实例之实现Google+滑动Listview让底部bar隐藏

    Android的AbsListView类(ListView的父类)提供了一个OnScrollListener接口,我们可以通过实现它的onScrollStateChanged()和onScroll()方法来获取滑动状态和位置信息。当用户开始滑动ListView时,我们可以启动一个...

    android之listview和checkbox

    四、保存和恢复选择状态 4.1 当应用被关闭或者ListView重新加载时,需要保存用户的选中状态。可以使用SharedPreferences或者数据库来存储这些信息。 4.2 在ListView初始化时,读取保存的状态并设置给CheckBox。这样...

    android 的 ListView +ViewPage+Fragmen+TabHost滑动效果

    在实际开发中,要注意性能优化,比如使用ViewHolder模式减少ListView的视图查找时间,以及合理使用Fragment的保存和恢复状态。同时,为了保证兼容性和用户体验,要关注不同Android版本和设备的差异,适时引入Support...

    Android luncher拖动效果+listview下拉加载

    5. **状态保存与恢复**:在用户拖动后改变应用位置,系统需要能够保存这些更改并在下次启动时恢复。 接下来,"listview下拉加载"是常见的无限滚动加载策略,主要用于大数据量列表的优化: 1. **ListView与Adapter*...

    android里多个listview的删除

    9. **状态保存与恢复**:在Activity的生命周期中,需要考虑删除状态的保存和恢复。例如,当Activity因配置更改而重建时,应恢复之前的状态,包括已删除的item。 10. **异常处理**:在执行删除操作时,应捕获可能...

    Android 横竖都能滑动的 listview 嵌套在一起的-IT计算机-毕业设计.zip

    总的来说,这个毕业设计项目涵盖了Android开发中的多个核心知识点,如ListView的使用、事件处理、横竖屏切换、自定义适配器以及状态保存和恢复等。通过实践和研究这样的项目,开发者不仅可以提升Android编程技能,还...

    自定义ListView的横屏滑动

    - 当设备旋转时,确保ListView的横屏状态能够正确保存和恢复。这可能需要在Activity或Fragment中处理配置更改。 8. **测试与调试**: - 在实际设备和不同分辨率的模拟器上进行广泛的测试,确保横屏滑动功能在各种...

    android listView含CheckBox、Button、EditText

    - 确保当ListView滚动时,CheckBox和EditText的状态能够正确地保存和恢复,以保持用户在滚动时看到的视图与实际数据一致。 7. **优化性能**: - 使用ViewHolder模式可以减少findViewById的调用,提高ListView的...

    Android联动ListView

    7. **数据存储与恢复**:如果应用需要记住用户的选定状态,可以将当前选择的省份和城市保存到SharedPreferences或数据库中,然后在应用启动时读取并恢复选择。 8. **测试与调试**:在实现联动效果后,进行充分的...

    【android开发】仿QQ中ListView中选项左滑出现删除按钮

    在ListView滚动时,需要确保滑动状态能正确保存和恢复。当一个列表项被滑出屏幕后再次出现,其滑动状态应保持一致。 6. **性能优化**: 使用convertView机制来重用视图,避免在滑动时频繁创建新的View对象。同时...

    (Android)五分钟让你轻松学会ListView单选和多选功能

    通过以上步骤,你就能在你的Android应用中实现ListView的单选和多选功能。理解ListView的工作原理和Adapter模式是关键,同时,熟练运用各种UI组件(如RadioButton和CheckBox)以及处理用户的交互事件也是必不可少的...

    飞行滑动的listView

    因此,我们需要确保在Item的复用过程中,动画状态可以正确地保存和恢复。 其次,要实现动画效果,可以利用Android的ValueAnimator或者ObjectAnimator来控制Item的变形效果。这些类允许开发者随着时间线改变某个属性...

    ListView添加左滑删除控件

    5. **状态保持**:在用户滑动过程中,若ListView因为滚动或其他原因改变了位置,需要保存和恢复滑动状态。可以通过Adapter中的数据结构来记录每个列表项的状态,当ListView重新绘制时,根据这些状态调整视图。 6. *...

Global site tag (gtag.js) - Google Analytics