Articles of android listview

仅在某些手机中,ListView在notifyDataSetChanged()之后不刷新

这是因为它仅在某些手机中发生,这些分辨率是FHD。 当显示UI时,一切似乎都可以。 当我单击项目并调用notifyDataSetChanged()时,item不会刷新它的外观。 我需要再次点击ListView,项目将刷新布局到正确的外观。 如果列表视图改变大小(例如:搜索function将重新设计整个布局),一切都会变好。 这是ListView代码: public final class MyListView extends ListView implements AdapterView.OnItemClickListener { ArrayList selectList; ArrayList idList; ShowItemAdapter showAdapter; public MyListView(Context context) { selectList = new ArrayList(); idList = new ArrayList(); readIdList(mIdList); showAdapter = new ShowItemAdapter(context, idList, selectList); setAdapter(showAdapter); … } @Override protected void onFinishInflate() { setOnItemClickListener(this); } @Override public void onItemClick(AdapterView parent, […]

Android 4.4中快速滚动的问题

我编写了一个应用程序,其布局中包含一个支持快速滚动的ListView(即拖动滚动条滑块可以让您快速向上或向下滚动列表)。 这适用于所有版本的Jelly Bean(4.1-4.3)。 但是,在我更新到Kit Kat后,快速滚动不再有效,我的滚动条只是一个普通的滚动条。 但是,如果我退出我的应用程序并重新登录,则会出现快速滚动。 如何快速滚动以在Kit Kat中持续工作? 我已经复制并粘贴了下面的列表视图适配器代码: // Adds section popup for fast scroll class NameListAdapter extends SimpleAdapter implements SectionIndexer { HashMap alphaIndexer; private String[] sections; private ArrayList sectionList; private List<HashMap> data = null; public NameListAdapter (Context context, List<HashMap> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); alphaIndexer […]

如何将列表项放在导航抽屉列表视图的底部,如Foursquare

我得到了导航抽屉的列表视图,如何将列表项添加为“添加好友”,“设置”对齐在列表视图的底部。 更新1 我在页脚视图中添加了一个设置视图。 View settingView = getLayoutInflater().inflate(R.layout.drawer_list_item, null); TextView textView = (TextView)settingView.findViewById(R.id.drawer_list_item_text_view); textView.setText(“Settings”); drawerListView.addFooterView(settingView); 设置项成功显示在列表视图中的最后一个项目上。 但是我怎样才能让它在底部粘住并对齐? 谢谢。

拖放在`ListView`中

我试图在android(Ice Cream Sandwich)中的ListView中实现拖放。 因此,当拖动的对象到达ListView的边缘时,我在相关方向上滚动ListView 。 问题是,当我们滚动时,有时适配器会根据需要创建新的View ,并且这些“新” View之前没有收到ACTION_DRAG_STARTED事件,因此不会收到DragEvent更新。 有什么方法可以将事件发送到这些视图吗?

在方向更改中保留列表片段中的列表

我有一个使用片段的应用程序,所有这些都包含在一个活动中。 活动以包含按钮菜单的片段开始,所有这些按钮都会导致各种listfragments替换原始按钮/菜单片段。 我的问题是,在方向更改时,如果活动正在显示其中一个列表视图,它将消失并返回按钮菜单。 我理解为什么会发生这种情况……活动被破坏并重新创建,但不是如何解决它并通过方向更改维护列表视图/当前片段。 我在这里find了setRetainInstance和使用示例,但是我无法弄清楚如何将它应用于我的情况下使用按钮菜单或者我想要保留的片段可能是几个不同的片段之一。 下面是简化的代码,以显示主要活动和一个listfragments。 任何指向添加内容的指针都将非常感激,以便保留列表片段。 活动 public class Main extends FragmentActivity { private MainMenuFragment menu; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); menu = new MainMenuFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.pane, menu).commit(); } } ListFragment public class ItemListFragment extends ListFragment { private TextView header; private TextView empty; private Button add; public static Cursor itemCursor; private GroceryDB […]

Android – ListView在到达时加载更多项目

我已经成功实现了一个listView,其中每一行都是我创建的对象。 我有一个接口读取一些对象并返回它们的数组,我将其传递给适配器构造函数。 我想要做的是,因为列表可能很长,我的界面允许每次读取更多的项目(第0页,第1页……)所以我想,当用户到达列表的最后一行时,加载下一页并将其插入listView。 这样做的正确方法是什么? 我实际上希望“到达列表末尾”触发回调,我可以请求更多页面并将它们加载到列表中。 我的主要问题有点OT,但我不介意使用baseAdapter,两者都可以工作,我只是不知道什么对任务更好。

`ListView.invalidateViews()`和’Adapter.notifyDataSetChanged()’之间有什么区别吗?

ListView.invalidateViews()和Adapter.notifyDataSetChanged()之间有什么区别吗?

Android:如何测量ListView的总高度

我需要测量ListView的总高度,但似乎我总是得到错误的值。 我正在使用此代码: public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); Log.w(“DESIRED WIDTH”, String.valueOf(listAdapter.getCount())); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); totalHeight += listItem.getMeasuredHeight(); Log.w("HEIGHT"+i, String.valueOf(totalHeight)); } […]

FastScroller仅滚动回第一个元素,而不是滚动到标题视图

我已经在ListView中启用了快速滚动,ListView具有不可选择的标题视图。 如果向下滚动列表并将快速滚动滑块拖动到顶部,则列表仅滚动回第一个元素,而不是滚动到标题视图。 拖动列表,按预期工作。 屏幕截图1:屏幕截图中的红色区域是标题视图。 屏幕截图2:如果您将拇指拖到顶部,则只能获得第一个元素,标题视图仍然位于上方。 ListView lv = (ListView) findViewById(R.id.listView); lv.addHeaderView(getLayoutInflater().inflate(R.layout.view,null), null, false); 我创建了一个演示项目: https : //github.com/mikegr/fastscroll-bug 为什么拖动拇指不会滚动回到顶部?

Android:自定义列表视图中的单选按钮

我正在开发一个应用程序,我需要在列表视图中实现单选按钮。 我想实现一个列表视图,每行有一个单选按钮和两个文本视图。 列表视图下方有一个“确定”按钮。 我所做的是创建了一个列表视图和一个自定义适配器。 listview的代码如下: 我创建了一个自定义适配器布局: 片段的java代码如下: ListView listView = (ListView) view.findViewById(R.id.listview); // values is a StringArray holding some string values. CustomAdapter customAdapter = new CustomAdapter (getActivity(), values); listView.setAdapter(customAdapter ); listView.setOnItemClickListener(this); @Override public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) {} 适配器的代码如下: public class CustomAdapter extends ArrayAdapter { /** Global declaration of variables. […]