Articles of android listview

具有ViewHolder模式的ListView中的远程图像

主要问题: 延迟加载远程图像的最有效的无缺陷方法是在使用ViewHolder模式的简单ListView适配器中进行的吗? 我目前有一个实现,将首先检查SoftReference位图HashMap的图像的软caching版本。 如果失败,我检查我的硬caching中的图像的副本。 如果失败,我从网上获得。 我在一个单独的线程和队列中完成所有这些工作,以消除并发或重复的下载。 问题是通过callback加载。 因为我利用ViewHolder模式,我的视图不断被回收,我还没有find一个固定的方式来消除随机附加到我的ImageViews不同的图像。 我在每次加载之前默认为默认图像,但因为视图被回收得太快,所以“老”侦听器应用到我的ImageView上,提供了错误的图像,然后用正确的图像replace。 我发现的唯一的半固体解决scheme是使用ViewHolder本身作为监听器,但这只会使问题不那么明显。 它仍然发生在一个快速滚动。 任何帮助,将不胜感激。 更新: https://github.com/DHuckaby/Prime

Android:软键盘推高整体布局,需要调整列表视图

我有一个全屏聊天布局,我有一个标题顶部的标题,然后跟随listView与所有聊天消息,并在底部我有editText和buttom发送聊天消息。 现在当我点击editText的时候会发生什么,整个布局被推上去了。 我需要的是,带有标志的标题总是保持在原来的位置,而listView被resize。 这不是诀窍: android:windowSoftInputMode="adjustResize" 这也不是: android:windowSoftInputMode="adjustPan" 也许是因为我有一个完整的屏幕布局? 我需要find一种不同的方式来调整我的listView一旦键盘存在,任何想法? 提前致谢! 这是我的布局 <LinearLayout android:layout_width="match_parent" android:layout_height="70dp" android:background="@drawable/ss99_yellow_area_navigation_bar" android:baselineAligned="false" android:orientation="horizontal" > <ImageView android:id="@+id/back" android:layout_width="45dp" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:adjustViewBounds="true" android:clickable="true" android:src="@drawable/ss99_button_back" /> <ImageView android:id="@+id/logo" android:layout_width="wrap_content" android:layout_height="75dp" android:layout_weight="1" android:adjustViewBounds="true" android:src="@drawable/ss99_logo_small" /> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginTop="-2dp" android:background="@drawable/ss9_yellow_bar_chat_new" > <TextView android:id="@+id/userOpponent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> […]

如何使用MediaPlayer在列表视图中播放多个video?

我试图实现与video列表视图,因为它的元素。 我正在使用此项目在纹理视图上显示video。 它在下面使用MediaPlayer。 当在同一时间加载两个video时,它(大部分时间)失败。 我得到的错误是: TextureVideoView error. File or network related operation errors. MediaPlayer: error (1, -2147479551) 这也是从磁盘加载文件时发生的 在error handling部分,我尝试重置URL。 然后,我大部分得到 E/BufferQueueProducer: [unnamed-30578-12] disconnect(P): connected to another API (cur=0 req=3) 错误。 我不清楚的是,从networking设置一些任意video将工作,但重试相同的URL将失败。 所以在OnErrorListener中: textureView.setVideo(item.getUriMp4(),MediaFensterPlayerController.DEFAULT_VIDEO_START); 将失败,但是: textureView.setVideo("http://different.video" … ) 将工作得很好。 这对于特定文件也不是问题,因为滚动不同的video文件将失败。 有时那些失败的人下次还会工作 我也试过MediaCodec和MediaExtractor组合,而不是MediaPlayer方法,但我碰到,看起来像什么, 设备特定的平台错误 任何提示? 有什么build议么? 谢谢 W上。

为ListView强制onSizeChanged

我有一个listviewdynamic分配不同的数据集。 这工作正常。 我也使fastScrollEnabled是真实的。 为了更新sectionIndexer,我需要调用 list.setFastScrollEnabled(false); list.setFastScrollEnabled(true); 问题是索引显示在左上angular,这是一个知道的问题。 作为解决方法,每当我改变方向索引再次正确显示。 为了testing这个我已经实现了一个自定义ListView,观察是如果我可以强制listView调用onSizeChanged()它会正常显示。 现在的问题是: 是否有可能强制listView调用onSizeChanged()方法? 如果是的话我们怎么能做到这一点。 有没有人知道onSizeChanged()被调用时的条件。 当方向改变,我们可以想到的任何其他条件时,这绝对是被调用的。

如何从ListView中获取所有的孩子(可见和不可见)?

我的问题类似于ListView getChildAt为可见的孩子返回null ,但尽pipesearch我找不到解决scheme。 我有一个滚动ListView 。 ListView有10个项目,其中7个是可见的,3个是通过滚动隐藏的。 我也有一个外部方法(out of adapter),它必须从这个ListView获得所有的孩子(比如使用getChildAt() )。 我需要所有的10个项目,但最后3个是null对象。 我试过如下代码: getListView().smoothScrollToPosition(); 但是这不起作用。 我认为我不需要发布我的代码的其余部分,因为描述说明了一切?

无法恢复活动

我是新手,并试图让我的ListView刷新SQLite数据库更新后。 修改我的onResume()方法后,我没有收到编译错误。 我正在使用SimpleCursorAdapter重新查询,但它不工作。 收到的错误来自logcat,并在下面。 请指教…例子最好的帮助。 logcat的: 02-19 21:31:49.933: E/AndroidRuntime(714): java.lang.RuntimeException: Unable to resume activity {com.loginplus.home/com.loginplus.home.LoginList}: java.lang.NullPointerException 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.access$600(ActivityThread.java:123) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.os.Handler.dispatchMessage(Handler.java:99) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.os.Looper.loop(Looper.java:137) 02-19 21:31:49.933: E/AndroidRuntime(714): at […]

在导航抽屉中添加2个listview,只有一个可以工作

我尝试创build一个2个独立的listview里面的导航抽屉。 第一个名为“mDrawerList”的 listview被很好地显示出来。 – 这个列表中只有一个项目。 第二个名为“mListProcheDeChezVous”的 listview 从不显示。 – 这个listview中有3个项目。 当我在评论中,第一个列表视图,第二个不显示,所以我认为有一个问题,当创build第二个列表视图..但我不知道在哪里? 下面是导航抽屉布局的代码: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <ListView android:id="@+id/dernieres_news" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="#E3E9E3" android:dividerHeight="1dp" android:background="#F3F3F4"/> <ListView android:id="@+id/pres_de_chez_vous" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="#E3E9E3" android:dividerHeight="1dp" android:background="#F3F3F4"/> </android.support.v4.widget.DrawerLayout> 这里是我的MainActivity类的一段代码: public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList, mListProcheDeChezVous; […]

为什么ListView保持在ListPreference对话框的TextView之上?

我需要创build一个自定义ListPreference对话框,以便我可以在List(ListView)上添加一些标题文本(一个TextView)。 我已经创build了MyListPreference类来扩展ListPreference并覆盖onCreateDialogView(): @Override protected View onCreateDialogView() { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = (View) inflater.inflate(R.layout.dialog_preference_list, null); return v; } 我的XML布局dialog_preference_list.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:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:scrollbarAlwaysDrawVerticalTrack="true" /> </LinearLayout> 问题:TextView显示在ListView下面而不是上面。 我需要TextView在上面。 我已经尝试了LinearLayout和RelativeLayout(使用“下面”或“上面”属性),没有成功:我找不到一种方法将TextView放在ListView之上…布局非常简单,我看不到为什么列表保持在上面…另外,请注意,问题发生在一个真实的设备(Nexus 4,Android 4.2.2)和模拟器。 但是,在查看Eclipsegraphics布局中呈现的布局时,布局是正确的! 看到两个附加的图片。 任何想法如何解决这个问题? 设备上呈现的布局(不正确): 在Eclipse上呈现的布局(正确): […]

如何从JSONArray创build光标?

我有一个适配器类扩展GroupingCursorAdapter和typesAdapter_Contacts(Context context, Cursor cursor, AsyncContactImageLoader asyncContactImageLoader)types的构造函数。 我想用这个类填充我的ListView 。 我从一个是JSON Web服务获取数据。 所以我的问题是,我怎样才能将JSONArray转换为Cursor使用相同的适配器类?

Android使用expandableListView显示列表

我遵循这个例子教程,并开发了一个示例应用程序http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/ 如果我点击核心,我想加载一个更多的列表在同一个屏幕下的核心 ,我怎么可以做到这一点?使用我的下面的代码我能够加载在另一个屏幕上的子列表,帮助? 我的ChildClickListener的代码在这里: @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // TODO Auto-generated method stub Log.d("onChildClick", "onChildClick"); String position = (String) parentItems.get(groupPosition); Log.d("position", position); String child = listDataChild.get(position).get(childPosition); Log.d("child", child); if (child.equalsIgnoreCase("Core")) { ArrayList<String> parentItems = new ArrayList<String>(); HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>(); ArrayList<String> childItems […]