Articles of listview

Android ScrollView中的VerticalScrollExtent是什么?

从回答我的其他问题之一,我发现一个ListView子类的Google演示 ,允许项目重新sorting。 演示效果很好,但是在理解它是如何工作的时候遇到了一些麻烦:当一个项目拖到ListView的上下时,ListView开始向上/向下滚动显示新的项目。 必要的计算使用不同的参数ScrollView: public boolean handleMobileCellScroll(Rect r) { int offset = computeVerticalScrollOffset(); int height = getHeight(); int extent = computeVerticalScrollExtent(); int range = computeVerticalScrollRange(); int hoverViewTop = r.top; int hoverHeight = r.height(); if (hoverViewTop <= 0 && offset > 0) { smoothScrollBy(-mSmoothScrollAmountAtEdge, 0); return true; } if (hoverViewTop + hoverHeight >= height && (offset […]

自定义Android ListView颜色?

我已经search了interwebs,发现了很多关于如何使用列表select器来更改列表视图的颜色的文章。 但是,它似乎并没有为我工作。 所以我的问题是我做错了什么? 当我使用下面的文件时,我得到一个列表,其中所有的项目背景最初是蓝色的。 (我预计白色) 当我上下移动焦点时,文字变成深灰色,物品背景仍然是蓝色的。 (这是当我期望一行是蓝色的,其余的是白色的) 当我点击一行时,点击的行的背景变成黑色,其他所有的行变成绿色。 (我希望有一排我点了绿色,其余的是白色的) 这是我的主要布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:listSelector="@drawable/item_selector" /> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/empty" /> </LinearLayout> 这是我的列表项目文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="10sp"> <CheckBox android:id="@+id/checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="false" /> <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="end" android:singleLine="true" android:textStyle="bold" […]

自定义ListView不会在点击时突出显示ListViewItem

我有一个由ImageView和TextView组成的自定义列表视图。 点击工作正常,但不会像正常的ListView那样突出显示该项目。 我将如何添加一个亮点? 我尝试通过点击背景色设置背景颜色,然后添加一个计时器来去除背景颜色。 这工作,但我想要一个更好的解决scheme。 有任何想法吗?

Android:使用onClick在ListView Row中更改button背景

我的行包含一个button,在适配器的getView中设置了自己的单击监听器。 我能够区分我的button点击和实际的行项目点击使用android:descendantFocusability =“blocksDescendants”在行的父项。 当我点击一个button,它正确设置button的背景,我的问题是当我滚动列表中设置它为不同的行。 我认为他们有一个问题的地方回收的意见。 这是我的代码: @Override public View getView(int position, View convertView, ViewGroup parent){ if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.todays_sales_favorite_row, null); holder.favCatBtn = (Button)convertView.findViewById(R.id.favCatBtn); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.favCatBtn.setTag(position); holder.favCatBtn.setOnClickListener(this); return convertView; } @Override public void onClick(View v) { int pos = (Integer) v.getTag(); Log.d(TAG, "Button […]

NullPointerException在android.widget.AbsListView.contentFits(AbsListView.java:722)

我得到一个奇怪的NullPointerException 。 我的代码中没有指向。 另外我知道我的应用程序只给出了这个NullPointerException: 制造商:索尼爱立信 产品:MT11i_1256-3856 Android版本:2.3.4 有任何想法吗? java.lang.NullPointerException at android.widget.AbsListView.contentFits(AbsListView.java:722) at android.widget.AbsListView.onTouchEvent(AbsListView.java:2430) at android.widget.ListView.onTouchEvent(ListView.java:3447) at android.view.View.dispatchTouchEvent(View.java:3952) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:995) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1711) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1145) at android.app.Activity.dispatchTouchEvent(Activity.java:2096) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1695) at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2217) at android.view.ViewRoot.handleMessage(ViewRoot.java:1901) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3701) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) at […]

animation列表查看孩子只出现一次

我有一个listView约20项(dynamic项目)。 我想要首先给用户显示这些项目的animation。 像Google+卡。 有几点我想达到: 只有当用户开始看到它们时才有animation。 项目只有一次animation。 (不是每次用户看到它们) 在快速滚动的项目不会互相混淆。 animation根据项目的位置开始延迟。 到现在我已经尝试过了: LayoutAnimationController(这个方法不符合第一个要求) convertView.startAnimation(此方法不符合第二个要求) convertView.startAnimation与一个标志,如果位置的项目之前已经animation(此方法不适用于listView中的第一项,因为,getView方法将被调用两次listView中的第一项(我不知道为什么!layout_height和layout_width都是match_parent)) 我search了很多,但不能一起解决scheme。 顺便说一下,我不喜欢使用外部库。 我以前见过这个 。 谢谢。

Android Espresso ListView点击项目

我有ListView与图片和文字。 当我尝试点击项目,我得到错误 android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.cifrasoft.telefm:id/cardsGridView' matches multiple views in the hierarchy. Problem views are marked with '****MATCHES****' below. 我使用下面的代码: onData(hasToString(startsWith("Item Text"))) .inAdapterView(withId(R.id.cardsGridView)) .perform(click()); 我可以点击ListView使用Adapter位置,没有匹配或startWith ?

UIAutomator根据索引点击列表视图

我想实现一个UIAutomatortesting用一般的方法来执行一个ListView项目上的点击(无论持有Listitem视图组的types)。 目前我有下面的代码,但它不断点击第一个项目。 public void clickListViewItem(int index) throws UiObjectNotFoundException { UiObject listview = new UiObject(new UiSelector().className("android.widget.ListView")); if(index <= listview.getChildCount()){ listview.getChild(new UiSelector().index(index)).click(); }else{ throw new UIObjectNotFoundException("Index is greater than listSize"); } }

更新GridView / ListView而不重新填充

每当你更新一个GridView / ListView的时候,你notifyDatasetChanged在适配器上调用notifyDatasetChanged来重新填充列表中的新数据,删除当前列表中的所有内容。 现在把这个小video例如从L Previewdevise指南 是否有可能实现相同的效果,只有当你看到的新变化是在适配器重新加载时没有任何“闪烁”而进入的新项目,还是现在只能在L中完成的事情? 在添加新笔记时, Google Keep应用程序中也可以find这种效果

更改ListView背景 – 奇怪的行为

我在更改ListView中的视图的背景有问题。 我需要的: 更改onClick()行的背景图片 究竟发生了什么: 按下例如第一个条目后,背景被改变(select)。 但是在滚动之后,第8项也被选中。 滚动到顶部,第一个不再被选中。 第二个条目现在被选中。 继续滚动,继续跳跃… “守则”中的东西: 我有渠道,onClick()我切换通道布尔select的属性,然后我改变背景。 我只做 onClick()这就是为什么我不明白为什么它真的发生在其他条目上。 我注意到的一件事是:似乎只是“绘画”,因为被“自己”选中的项目仍然是虚假的选定值 我认为这似乎与自定义ListAdapters中的视图重用getView(…) 在ListActivity中onClick()的代码: @Override protected ViewHolder createHolder(View v) { // createHolder will be called only as long, as the ListView is not // filled TextView title = (TextView) v .findViewById(R.id.tv_title_channel_list_adapter); TextView content = (TextView) v .findViewById(R.id.tv_content_channel_list_adapter); ImageView icon = (ImageView) v .findViewById(R.id.icon_channel_list_adapter); […]