我正在尝试实现无穷尽的滚动列表视图,但是当我调用notifyDataSetChanged()
整个列表时,滚动位置将回到顶部。
这是正常现象吗?如何使它简单地添加添加的项目而不刷新并保持滚动位置?
这种行为是不正常的。我看不到您的代码,我建议您执行以下操作:
1)您不是notifyDataSetChanged()
从UI线程调用。正确的方法:
runOnUiThread(new Runnable() {
public void run() {
adapter.notifyDataSetChanged();
}
});
2)您是否偶然拨打了电话 adapter.notifyDataSetInvalidated();
3)在您的适配器中,您重写了adapter.notifyDataSetChanged();
方法并添加了说明以转到顶部
4)如果您使用列表来填充适配器-
每次都提供新列表,那么适配器设置将被刷新。您应该始终提供相同的列表。但是,您可以根据需要进行任意更改。如果您要重置列表,请使用list.clear
代替list = new ArrayList();
这是我的适配器的示例:
public class Adapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;
public MediaItemAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data = d;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.item_composer, null);
}
TextView title = (TextView) vi.findViewById(R.id.item_title); // title
TextView price = (TextView) vi.findViewById(R.id.price);
return vi;
}
}
要求适配器:
List myList = new ArrayList<HashMap<String, String>>();
Adapter ma = new Adapter(this, myList);
适配器初始化之前,myList可以为空。
然后对我的列表进行一些操作:
myList.add(someElement);
ma.notifyDataSetChanged();
如果需要删除所有项目:
myList.clear();
ma.notifyDataSetChanged();
这样的实现是无止境的,我看到了超过一万五千个元素,没有任何问题。
我试图实现一个无休止的滚动列表视图,但当我调用时,整个列表将刷新,然后滚动位置返回顶部。 这是正常行为吗?我如何让它简单地添加添加的项目而不刷新并保持滚动位置?
我使用了recycler视图来显示列表中的数据。 在我的应用程序中,我在每10秒的时间间隔后运行一个服务来更新列表中的数据。现在的问题是当我从服务获得数据时,每次列表滚动都会跳回到顶部位置。 我不知道代码出了什么问题。 我已经通过以下链接,但没有任何结果。 当我更新时,Recyclerview位置更改为第一个位置 使用顶部的新项目刷新recyclerView适配器 NOTIFYDATASETCHE
问题内容: 第二天我不能用桌子解决问题。 我们有一个segmentedControl,它在更改时会更改表。假设控件段中有3个元素,并且相应地,有3个数组(重要的是,它们的大小不同),在更改segmentedControl时,我需要向上滚动表。 看起来一切都很简单:contentOffset = .zero和reloadData() 但。这行不通,我不知道为什么表格不能向上滚动。 唯一有效的方法:
我试过使用descendantFocusability=“blocksdescendents”,但这不起作用。 这是我的XML代码,可以在其中找到RecyclerView 用于向RecyclersView添加数据的代码是 所有应用程序都工作得很好,唯一的问题是滚动行为。当我在HIM中添加新数据时,我希望滚动位置不会出现在RecyclersView列表的顶部。
mescroll 下拉刷新,列表滚动到最底部,无法再次滚动? 最外层容器添加了mescroll,里面有一个滚动列表,总高度刚好占满一屏,现在如果下边滚动列表,滚动到到最底部,下拉刷新后,这个滚动列表就无法再滚动了,要怎么修改? mescroll官网地址
我正在做一个西班牙新闻应用程序,看这里: 这个应用程序的问题是,每当任何用户点击like、play audio或translate按钮时,recyclerView就会跳到顶部。 > 数据以片段形式从Firebase实时数据库中获取。请帮帮忙。 @override public View onCreateView(LayoutInfluater Influater,ViewGroup contain