有什么不同?android文档没有notifyDataSetInvalidated()的描述.我想也许您调用该函数来通知所有已注册的侦听器,但是使用notifyDataSetChanged()来通知它们?
我知道这里有很多类似的问题,但我无法在简单的示例应用程序中使用任何提供的解决方案.
第一次显示软键盘时会出现问题.显示后,只需再次按editText即可进行编辑.
尝试以下方法:
android:windowSoftInputMode="adjustPan|adjustResize"
Run Code Online (Sandbox Code Playgroud)
这不是解决任何问题.在弹出软键盘后,似乎必须使用此行来调整活动的大小.不幸的是,它也导致任何EditTexts失去焦点.这可能是ListView本身在调整大小过程后获得关注的焦点.所以我尝试了以下解决方法:
listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
Run Code Online (Sandbox Code Playgroud)
这总是导致第一可见的EditText了ListView包含获得焦点,这是不可取的.第二行中的第二个EditText应该在按下时获得焦点,这不会发生.此外,如果我最终设法聚焦另一个EditText,然后显示第一个(例如通过按下'Next' softkeyboard),第一个可见的将在键盘被解除后重新获得焦点并且ListView再次调整为其完整大小.
我尝试了其他一些事情,比如拦截onFocusChange()ListView的事件,同时知道它按下了哪个EditText TouchListener.再次请求关注某个EditText也没有取得任何成功.
对于相关项目,使用a ScrollView而不是ListView其他用户建议的选项不是一种选择.
android ontouchlistener android-softkeyboard android-listview android-edittext
我正在尝试ListView在滚动发生时为项目设置动画.更具体地说,我试图从iOS 7上的iMessage应用程序模拟滚动动画.我在网上找到了一个类似的例子:

为了澄清,我试图在用户滚动时对项目实现"流畅"运动效果,而不是在添加新项目时实现动画效果.我试图修改我的视图,我BaseAdapter已经查看了AbsListView源代码,看看我是否能以某种方式附加一个AccelerateInterpolator可以调整发送到子视图的绘制坐标的地方(如果这甚至是如何AbsListView设计).到目前为止,我一直无法取得任何进展.
有没有人对如何复制这种行为有任何想法?
有关谷歌搜索帮助的记录:这在ios上被称为"UIKit Dynamics".
它内置于最近的iOS版本中.然而,它仍然有点难以使用.(2014)这是每个人都复制的帖子:广泛复制的文章令人惊讶的是,UIKit Dynamics仅适用于苹果的"收藏视图",而不是苹果的"桌面视图",因此所有的iOS debs都必须将内容从表视图转换为"集合视图"
每个人都在使用的库是BPXLFlowLayout作为起点,因为那个人几乎破解了复制iphone短信应用程序的感觉.事实上,如果你将它移植到Android我猜你可以使用那里的参数来获得相同的感觉.我注意到在我的android fone系列中,HTC手机在他们的UI上有这种效果.希望能帮助到你.Android摇滚!
我试图理解这个ListView概念及其工作原理,我正在尝试创建自己的扩展适配器BaseAdapter.对于ArrayAdapter例如,有notifyDataSetChanged()你已经更新了其持有的所有数据数组列表后,为了刷新应该被调用的方法ListView.
但我正在创建自己的子类BaseAdapter.那种方法对我来说不可用,或者是吗?我该如何实现这种方法?基本上,这种方法究竟做了什么,也许我会理解的.
如果ArrayAdapter我猜测它会查看ListView当前显示的位置,并检查它是否与ArrayList更新后的位置相同?要么...
它说的方法:
通知附加的观察者基础数据已被更改,反映数据集的任何视图都应自行刷新.
但它究竟是如何刷新自己的呢?
有人可以解释一下吗?
有人可以给我一个删除所有ListView项目并替换为新项目的示例代码吗?
我尝试更换适配器项而没有成功.我的代码是
populateList(){
results //populated arraylist with strings
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results);
listview.setAdapter(adapter);
adapter.notifyDataSetChanged();
listview.setOnItemClickListener(this);
}
// now populating list again
repopulateList(){
results1 //populated arraylist with strings
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results1);
listview.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
listview.setOnItemClickListener(this);
}
Run Code Online (Sandbox Code Playgroud)
这里的repopulateList()方法将添加到ListView项,但它不会删除/替换所有ListView项.
我正在使用一个RecyclerView并从API获取对象,批量为十.对于分页,我使用EndlessRecyclerOnScrollListener.
一切正常.现在剩下的就是在列表底部添加一个进度微调器,同时由API提取下一批对象.以下是Google Play商店应用的屏幕截图,其中显示了以下ProgressBar内容RecyclerView:
问题是,在获取下一批对象时,既RecyclerView没有EndlessRecyclerOnScrollListener内置支持也没有显示ProgressBar底部的内置支持.
我已经看到了以下答案:
1. 将不确定的ProgressBar页脚放在RecyclerView网格中.
2. 添加项目到无尽的滚动RecyclerView与ProgressBar在底部.
我不满意这些答案(由同一个人).这涉及null 在用户滚动时中途将对象拴入数据集中,然后在下一批次交付后将其取出.它看起来像是一个黑客,可以回避主要问题,可能会或可能不会正常工作.它会在列表中引起一些刺耳和失真
使用SwipeRefreshLayout不是解决方案.SwipeRefreshLayout涉及从顶部拉取以获取最新的项目,并且它无论如何都不显示进度视图.
有人可以为此提供一个很好的解决方案吗?我有兴趣知道Google是如何为自己的应用程序实现此功能的(Gmail应用程序也有此功能).是否有任何文章详细显示?所有的答案和评论将不胜感激.谢谢.
其他一些参考:
1. 分页RecyclerView.(精湛的概述......)
2. RecyclerView页眉和页脚.(更多相同......)
android android-listview android-progressbar android-5.0-lollipop android-recyclerview
我正在使用像这样设置的ListView:
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:longClickable="false"
android:choiceMode="singleChoice">
</ListView>
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我将一个OnItemSelectedListener添加到ListView,如下所示:
getListView().setAdapter(adapter);
getListView().setOnItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)
我的Activity实现了这样的监听器:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("Tag", "ListItemSelected: Parent: " + parent.toString() + " View: "
+ view.toString() + " Position: " + " Id: " + id);
}
Run Code Online (Sandbox Code Playgroud)
我的希望是,当我点击列表中的某些内容时,我会看到此调试输出.但调试输出永远不会显示在LogCat中.
我有一个相当复杂的布局(包含RelativeLayouts,TextViews和ImageViews),我想放在listview上面.此视图应滚动列表视图.
我尝试使用以下代码将布局作为标题添加到listview:
View v = inflater.inflate(R.layout.list_view, container, false);
View header = inflater.inflate(R.layout.header_layout, container, false);
// populate views in the header
mList = (ListView)v.findViewById(R.id.list);
mList.addHeaderView(header);
mAdapter = new ReviewsAdapter(getActivity());
mList.setAdapter(mAdapter); <-- error occurs here
Run Code Online (Sandbox Code Playgroud)
ReviewsAdapter是我编写的自定义适配器,它扩展了BaseAdapter.
执行代码后,我收到此错误:
11-25 17:19:14.802: E/AndroidRuntime(1215): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
11-25 17:19:14.802: E/AndroidRuntime(1215): at android.widget.ListView.clearRecycledState(ListView.java:513)
11-25 17:19:14.802: E/AndroidRuntime(1215): at android.widget.ListView.resetList(ListView.java:499)
11-25 17:19:14.802: E/AndroidRuntime(1215): at android.widget.ListView.setAdapter(ListView.java:442)
11-25 17:19:14.802: E/AndroidRuntime(1215): at com.coppi.storefront.product.ProductReviewsFragment.onCreateView(ProductReviewsFragment.java:104)
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该mList.addHeaderView(header)行,我就不会收到错误.我也可以在没有列表视图的情况下显示标题布局.
我假设这与标题布局的内容有关,但我不确定究竟会导致它的原因.
这是标题xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="fill_parent" …Run Code Online (Sandbox Code Playgroud) 我有一个视图,实际上是一个按钮.这是它的XML布局(add_new.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/buttonNew"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/bText"
android:onClick="addNew"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
当我将其可见性设置为GONE时
v = getActivity().getLayoutInflater().inflate(R.layout.add_new, null);
v.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
它消失但仍占据空间.像这样:
这个按钮是一个标题,ListView由这个xml定义:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/porno" >
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="40dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="10dp"
android:layout_marginTop="4dp"
android:src="@drawable/ic_launcher">
</ImageView>
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="20dp" >
</TextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
当其可见性设置为GONE时,我不希望它占用额外的列表项.正如文档中所述.
GONE - 此视图不可见,并且不需要任何空间用于布局.
关于如何使它不占用空间的任何想法?
谢谢,Dennis xx
PS我的listview位于FoldersFragment内部,ListFragment这里是我的MainActivity的xml,其中提供了FoldersFragment
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/foldersFragment"
android:layout_width="200dip"
android:layout_height="match_parent"
class="com.example.fragments.FoldersFragment" >
</fragment> …Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试创建类似于gmail app导航抽屉的导航抽屉.我关注开发者网站,但它只指定了基本实现.但我需要根据我的规格自定义导航.
我怎样才能做到这一点?