Questions tagged «listview»

ListView是大多数现代操作系统中的UI库提供的图形屏幕控件或窗口小部件,用于以列表形式显示项目。

6
我们应该使用RecyclerView替换ListView吗?
Android文档说: RecyclerView小部件是ListView的更高级,更灵活的版本。该小部件是一个用于显示大型数据集的容器,可以通过维护有限数量的视图来非常高效地滚动该数据集。当您有数据收集,其元素在运行时根据用户操作或网络事件而更改时,请使用RecyclerView小部件 ListView如果效率无关紧要,实际上可以完成上述所有操作,并且当我们RecyclerView用来替换时,我们发现了很多问题ListView: 没有用于列表项选择的onItemClickListener()- 解决方案 列表项之间没有分隔符- 解决方案 没有内置的重叠选择器,单击列表项时没有视觉反馈- 解决方案 列表头没有addHeaderView- 解决方案 也许更多的问题... 因此,当我们使用RecyclerViewreplace时ListView,我们必须做很多额外的编码才能达到与相同的效果ListView。 题: 我们完全替换ListView成值得RecyclerView吗? 如果不是那么在这种情况下,我们应该更好地利用RecyclerView替代ListView,反之亦然?

2
如何获得给定上下文的布局充气机?
我正在编写ListAdapter的自定义实现。 在其构造函数中,我将获取一个Context,一个资源ID(即R.id.xxx代表布局文件)以及一个列表和一个映射(其中包含数据)。 现在,问题是我将需要一个LayoutInflater来获取位于单独的布局XML文件中的View对象。 仅给出上下文,如何才能获得LayoutInflater? 现在,为什么我认为这是可行的,是因为这与传递给ArrayAdapter的构造函数(上下文,资源,textViewResourceId,数据数组)非常相似,而且我认为ArrayAdapter也必须利用LayoutInflater仅提供了一个上下文。 但是怎么办呢?

3
如何将baselineAligned设置为false,如何提高LinearLayout的性能?
我只是在xml中构建一些UI,Lint给了我一个警告,并说将android:baselineAligned设置为false以提高ListView的性能。 Lint更改的文档添加了此警告,说 布局性能:查找具有权重的LinearLayouts,应在其中设置android:baselineAligned =“ false”以获得更好的性能,并查找嵌套权重会导致性能问题的情况。 有人可以解释为什么这样做可以改善性能,特别是在涉及体重时?


19
Android中的水平ListView?
可以ListView水平制作吗?我已经使用图库视图完成了此操作,但是所选项目自动出现在屏幕中央。我不希望所选项目位于我单击的同一位置。如何解决此问题?我的想法是ListView使用水平滚动条设置。分享您的想法?

14
如何对Android ListView行的添加或删除进行动画处理
在iOS中,有一个非常简单而强大的工具可以对UITableView行的添加和删除进行动画处理,这是一个来自youtube视频的剪辑,显示了默认动画。注意周围的行如何折叠到已删除的行上。此动画可帮助用户跟踪列表中的更改以及数据更改时用户在列表中的位置。 自从我在Android上进行开发以来,我发现没有等效的工具可以为TableView中的各个行设置动画。调用notifyDataSetChanged()我的适配器会使ListView立即用新信息更新其内容。我想显示一个新的简单动画,当数据更改时,新行会推入或滑出,但是我找不到任何记录的方式来做到这一点。看起来LayoutAnimationController可能拥有使它起作用的关键,但是当我在ListView上设置LayoutAnimationController(类似于ApiDemo的LayoutAnimation2)并在列表显示后从适配器中删除元素时,这些元素会立即消失而不是动画化。 我还尝试了以下操作来为单个项目添加动画: @Override protected void onListItemClick(ListView l, View v, final int position, long id) { Animation animation = new ScaleAnimation(1, 1, 1, 0); animation.setDuration(100); getListView().getChildAt(position).startAnimation(animation); l.postDelayed(new Runnable() { public void run() { mStringList.remove(position); mAdapter.notifyDataSetChanged(); } }, 100); } 但是,动画行周围的行不会移动位置,直到它们在notifyDataSetChanged()调用时跳到新位置为止。放置元素后,ListView似乎不会更新其布局。 在编写我自己的ListView的实现/分支时,我已经想到了,这似乎并不难。 谢谢!

25
Android,ListView IllegalStateException:“适配器的内容已更改,但ListView没有收到通知”
我想做的是:运行后台线程,该线程计算ListView的内容并部分更新ListView,同时计算结果。 我必须避免的是:我无法弄乱后台线程中的ListAdapter内容,因此我继承了AsyncTask并从onProgressUpdate发布结果(向适配器添加条目)。我的适配器使用结果对象的ArrayList,对这些arraylist的所有操作均已同步。 其他人的研究:有非常有价值的数据在这里。对于大约500个用户的组,我几乎每天都遭受崩溃,当我list.setVisibility(GONE)/trackList.setVisibility(VISIBLE)在onProgressUpdate中添加块时,崩溃降低了10倍,但没有消失。(有人在回答中建议) 我有时得到的结果:请注意,这种情况很少发生(3.5k用户之一一周一次)。但我想完全摆脱这个错误。这是部分堆栈跟踪: `java.lang.IllegalStateException:` The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131296334, class android.widget.ListView) with Adapter(class com.transportoid.Tracks.TrackListAdapter)] at android.widget.ListView.layoutChildren(ListView.java:1432) at android.widget.AbsListView.onTouchEvent(AbsListView.java:2062) …

4
带有自定义Android适配器的ArrayIndexOutOfBoundsException,用于ListView中的多个视图
我试图为我的ListView创建自定义适配器,因为列表中的每个项目都可以具有不同的视图(链接,切换或单选组),但是当我尝试运行使用ListView的Activity时收到错误消息,并且该应用程序停止。该应用程序针对Android 1.6平台。 代码: public class MenuListAdapter extends BaseAdapter { private static final String LOG_KEY = MenuListAdapter.class.getSimpleName(); protected List<MenuItem> list; protected Context ctx; protected LayoutInflater inflater; public MenuListAdapter(Context context, List<MenuItem> objects) { this.list = objects; this.ctx = context; this.inflater = (LayoutInflater)this.ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) …

8
Android:具有多个可点击按钮的ListView元素
我ListView在列表中的每个元素都包含一个TextView和两个不同的Button的地方。像这样: ListView -------------------- [Text] [Button 1][Button 2] -------------------- [Text] [Button 1][Button 2] -------------------- ... (and so on) ... 使用此代码,我可以OnItemClickListener为整个商品创建一个: listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> list, View view, int position, long id) { Log.i(TAG, "onListItemClick: " + position); } } }); 但是,我不希望整个项目都可单击,而只希望每个列表元素具有两个按钮。 所以我的问题是,如何使用以下参数为这两个按钮实现onClickListener: int button (已单击元素的哪个按钮) int position (这是列表中单击按钮的元素) …
182 android  listview  button 

14
如何滚动到长ScrollView布局的顶部?
对于我的应用程序的一部分,系统会向用户显示一个名称列表,并要求他们将其分组为合适的名称。 (请注意,ListView代码是从Android Views教程中逐字复制的。我尚未根据需要对其进行自定义,我只是想弄清楚如何实现此功能。) 基本布局是LinearLayout,其中包含ScrollView(在下面的代码中称为“ groupsScrollView”),其中包含RelativeLayout。我有一些按钮和文本,然后是其下方的ListView,其中显示了名称列表。所有这些都比可见屏幕区域高,因此允许用户垂直滚动以查看所有内容。 这一切都很好用,除非页面加载时总是将页面预滚动到我的ListView的顶部-在页面的中间。我创建的告诉用户操作的文本和按钮不可见。 我可以抓住屏幕并向上滚动,效果很好,但是我希望屏幕已经滚动到顶部才能加载。用户不必向上滚动即可查看新加载页面的顶部。但是我尝试以编程方式滚动到屏幕顶部的所有操作均失败了。 这是我的onCreate方法: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.groups); mainScrollView = (ScrollView)findViewById(R.id.groupsScrollView); //get the Bundle out of the Intent... Bundle extras = getIntent().getExtras(); mNames = extras.getStringArray("mNames"); setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, mNames)); ListView lv = getListView(); lv.setTextFilterEnabled(true); //This is the line I'm having issues with mainScrollView.pageScroll(View.FOCUS_UP); …

11
自定义listview适配器的getView方法被多次调用,并且没有一致的顺序
我有一个自定义列表适配器: class ResultsListAdapter extends ArrayAdapter<RecordItem> { 在重写的“ getView”方法中,我执行打印以检查位置是什么,以及它是否是convertView: @Override public View getView(int position, View convertView, ViewGroup parent) { System.out.println("getView " + position + " " + convertView); 其输出(首次显示列表时,尚无用户输入) 04-11 16:24:05.860: INFO/System.out(681): getView 0 null 04-11 16:24:29.020: INFO/System.out(681): getView 1 android.widget.RelativeLayout@43d415d8 04-11 16:25:48.070: INFO/System.out(681): getView 2 android.widget.RelativeLayout@43d415d8 04-11 16:25:49.110: INFO/System.out(681): getView …
162 java  android  listview 

3
如何在Android上动态更新ListView [关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊不清,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 在Android上,如何ListView根据用户输入进行过滤,其中显示的项目会根据TextView值动态更新? 我正在寻找这样的东西: ------------------------- | Text View | ------------------------- | List item | | List item | | List item | | List item | | | | | | | | | -------------------------

28
ScrollView中的ListView在Android上不滚动
我有一个滚动的麻烦ListView内ScrollView。我有一个Activity,在顶部具有一些EditTexts,然后是一个带有两个选项卡的选项卡主机,每个选项卡具有一个ListView。当EditText视图成为焦点时,出现软键盘,并且当我有ScrollView时,内容可以滚动。但是问题来了,当ListViews中有更多项(选项卡中的项)时,即使有更多项,我也无法滚动ListView。 以下是布局XML: <?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:background="?backgroundImage" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="50dip" android:layout_alignParentBottom="true" android:layout_margin="10dip" android:id="@+id/buttons"> <Button android:text="Save" android:layout_margin="2dip" android:textSize="20dip" android:id="@+id/btnSaveorUpdate" android:layout_height="wrap_content" android:layout_width="145dip"></Button> <Button android:text="Cancel" android:layout_margin="2dip" android:textSize="20dip" android:id="@+id/btnCancelorDelete" android:layout_height="wrap_content" android:layout_width="145dip"></Button> </LinearLayout> <ScrollView android:layout_above="@id/buttons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:layout_margin="10dip"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dip"> <TextView android:text="Bill details" android:textColor="?textColorDark" android:layout_alignParentTop="true" android:id="@+id/txtEnterDetails" …

9
Android Recyclerview与带有Viewholder的ListView
我最近遇到了RecyclerView与Android 5.0一起发布的android 系统,它似乎RecyclerView只是一个封装的传统,ListView并结合了ViewHolder模式,该模式促进了视图的重用,而不是每次都创建它。 使用的其他好处是RecyclerView什么?如果两者在性能方面具有相同的效果,为什么还要选择RecyclerView`? 编辑 我发现人们也提出了类似的问题,并且答案不是确定性的,因此将其添加到此处以进行记录。 Recyclerview与Listview 我们应该使用RecyclerView替换ListView吗? 为什么RecyclerView没有onItemClickListener()?RecyclerView与Listview有何不同?

7
android.content.res.Resources $ NotFoundException:字符串资源ID#0x0
我正在开发一个Android应用,该应用从MySQL数据库读取数据,但遇到了此错误。我有这个XML布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/wardNumber" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="3dp" android:text="Ward Number" android:textSize="22dp"/> <TextView android:id="@+id/dateTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/wardNumber" android:layout_alignParentRight="true" android:layout_marginRight="3dp" android:text="Date-Time" /> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/dateTime" android:layout_alignBottom="@+id/dateTime" android:layout_alignLeft="@+id/wardNumber" android:layout_marginLeft="3dp" android:text="Name" /> </RelativeLayout> 这是我的Java文件: public ApplicationAdapter(Context context, List<Application> items) { super(context, R.layout.app_custom_list, items); this.items = …
145 java  android  xml  listview 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.