Articles of listadapter

图像适配器泄漏内存

我有一个简单的ListActivity来显示图像,我在ImageAdapter类的构造函数中为Picasso Builder提供了我的OkHttpClient: picassoClient = new OkHttpClient(); picassoClient.interceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request newRequest = chain .request() .newBuilder() .addHeader(“Cookie”,”xyz”) .build(); return chain.proceed(newRequest); } }); new Picasso.Builder(context).downloader(new OkHttpDownloader(picassoClient)).build(); 然后在getView()使用Picasso在ImageView中加载图像: Picasso.with(context).load(xyzUrl).fit().centerCrop().into(vImage); 它工作得很好,但是在设备的旋转上,我看到堆大小有时会慢慢增长,有时很快,有时会保持稳定。 它很少掉落。 我泄漏内存还是代码有问题? 编辑:我在getView()调用Picasso后插入此代码 if (BuildConfig.DEBUG) { Log.i(“HEAP SIZE”, String.valueOf((Runtime.getRuntime().totalMemory() / 1024) – (Runtime.getRuntime().freeMemory() / 1024))); } 我发现在将位图加载到ImageView之后,堆大小的增长发生在getView() 。 哪里不对? 编辑2 […]

listPreference中的自定义行?

我正在尝试创建一个ListPreference但不知何故禁用其中一个项目。 有点像灰色或其他东西,没有能力选择它。 这将是一个即将推出的function,我希望它在列表中不可选择。 我已经创建了一个自定义ListPreference类,并在该类中创建了一个自定义适配器,希望使用该适配器来创建我想要的东西。 代码工作,它设置适配器,但没有调用任何适配器函数。 我在方法上设置断点,例如getCount()但它们永远不会被调用。 这是我的代码。 自定义ListPreference取自http://blog.350nice.com/wp/archives/240 import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; import android.preference.ListPreference; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.app.AlertDialog.Builder; public class CustomListPreference extends ListPreference { private boolean[] mClickedDialogEntryIndices; CustomListPreferenceAdapter customListPreferenceAdapter = null; Context mContext; public CustomListPreference(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; mClickedDialogEntryIndices = new […]

Android Endless列表内存管理

我正在通过在onScrollStateChanged(…)方法中向arraylist加载更多项来实现无限的listview。 如果我实现这个方案来获取超过一百万个条目,我将有一百万个对象添加到arraylist,这是内存密集型的。 我可以使用哪些方案进行有效的内存管理? PS:问题是关于可以放入适配器的项目数量。 编辑: 更多细节: 数据来源是互联网。 我必须从Internet获取数据并将其放入listview适配器。

是否有一个超级简单的List / ListAdapter示例为android

我有一个Web服务,返回一个超级简单的对象列表 MyObject [] data = webServiceCall(); MyObject有1个我要显示的字段, “Name” (即data[0].Name ) 如何将其转换为活动,在Android上的可滚动listActivity中仅列出这些对象的名称。 我对Cursors非常困惑,我不确定是否需要游标,我不确定要实现什么样的适配器( BaseAdapter , SimpleAdapter等) 所以我想我正在寻找三件事, 活动,适配器和layout.xml 只是试图想出这个机器人的东西,绝对是这里的菜鸟

使用ListAdapter时ArrayIndexOutOfBoundsException

我正在为ListView使用自定义ListAdapter 。 我不动态地改变任何东西(查看计数,视图types,启用/禁用,我读了其他post,但他们从代码中改变了一些东西)。 我必须执行以下操作来触发exception。 向下滚动到列表底部,然后再向上滚动。 在向上滚动animation的开头,我得到了这个例外。 04-14 09:41:43.907: ERROR/AndroidRuntime(400): FATAL EXCEPTION: main 04-14 09:41:43.907: ERROR/AndroidRuntime(400): java.lang.ArrayIndexOutOfBoundsException 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:4540) 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:3370) 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at android.widget.AbsListView.onTouchEvent(AbsListView.java:2233) 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at android.widget.ListView.onTouchEvent(ListView.java:3446) 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at android.view.View.dispatchTouchEvent(View.java:3885) 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903) 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-14 09:41:43.907: ERROR/AndroidRuntime(400): at […]

ListView中的ViewPager和OnItemClickListener

我正在创build一个滑动到解散列表视图适配器。 我的基本方法是将列表项的视图作为ViewPager中的第二个视图进行封装,并在ViewPager的项目更改侦听器中提供必要的callback。 通过很多痛苦,我已经使View回收站按预期工作,以及实现了ViewHolder和ViewBinder模式。 我甚至设法让ListView在ViewPager滚动的时候接pipe触摸事件,而不必制作一个ListView的自定义子类(我可以从Adapter中完成)。 我遇到麻烦的地方是让select器和OnItemClickListener工作。 在查看ListView的源代码之后,似乎通过覆盖ViewPager的hasFocusable()方法总是返回false(稍后我将从子视图中提取这个值),应该重新启用这些东西。 不幸的是,这种情况并非如此。 我已经尝试setDecendantFocusability()解决方法,我仍然坚持。 如果可能的话,我想避免扩展ListView,以提供最大的模块性。 由于类似的原因,我不想将select器添加到ViewPager的背景(如果开发人员更改ListView的select器,这将不会被反映)。 基本上,我正在寻求让ViewPager代码在ListView和子View之间透明。 有任何想法吗?

系统服务不可用于onCreate之前的活动?

我无法弄清楚如何解决这个错误。 我对Android和Java非常绿色,所以代码会随着解释而变得非常有帮助。 有任何想法吗? 谢谢。 LogCat: FATAL EXCEPTION: main ERROR/AndroidRuntime(13527): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.AC.List_AC}: java.lang.IllegalStateException: System services not available to Activities before onCreate() ERROR/AndroidRuntime(13527): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) ERROR/AndroidRuntime(13527): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) ERROR/AndroidRuntime(13527): at android.app.ActivityThread.access$2300(ActivityThread.java:125) ERROR/AndroidRuntime(13527): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) ERROR/AndroidRuntime(13527): at android.os.Handler.dispatchMessage(Handler.java:99) ERROR/AndroidRuntime(13527): at android.os.Looper.loop(Looper.java:123) ERROR/AndroidRuntime(13527): at android.app.ActivityThread.main(ActivityThread.java:4627) ERROR/AndroidRuntime(13527): at java.lang.reflect.Method.invokeNative(Native Method) ERROR/AndroidRuntime(13527): at java.lang.reflect.Method.invoke(Method.java:521) ERROR/AndroidRuntime(13527): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) […]

如何更新Android中的SimpleAdapter

是否有可能更新SimpleAdapter? 我有一个数据列表和一个页脚,说:“看下一个结果”当这个列表项被点击我捕捉事件,并获得新的数据。 然后我想用这个新的数据replaceListView中的数据,但我不知道如何做到这一点。 有任何想法吗? 我不想使用ArrayAdapter,因为据我所见,项目只能容纳一个string,我需要它来保存多个string和整数。

在Android上的ListView中突出显示选定的项目

我一直在做一个应用程序与Android中的ListViews一起工作,我不能这样做,以便所选(追踪)的项目有不同的背景。 我正在使用CHOICE_MODE_SINGLE。 这是我的代码看起来如此之远: 我使用的ListView: (在layout.xml中 ) <ListView android:id="@+id/listView" android:layout_width="wrap_content" android:layout_height="match_parent" android:choiceMode="singleChoice" android:listSelector="@drawable/selector_test" > </ListView> 我在适配器中使用的TextView布局: ( listItem.xml ) <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="23sp" android:textStyle="bold" /> 这是我添加适配器的地方: mListAdapter = new ArrayAdapter<String>(this, R.layout.listItem, mList); mListView = (ListView) findViewById(R.id.listView); mListView.setAdapter(mAuthorAdapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { String selected […]

Android:ViewHolder模式和不同types的行?

ViewHolder模式改进了ListView滚动框架,如下例所示: https : //developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html 对不同的行使用不同types的视图时是否可以保持这种模式? 换句话说,是否可以这样做: public View getView(int position, View view, ViewGroup parent) { // calculate viewID here if (view == null || *view is not null but was created from different XML than viewID* ) { view = mInflater.inflate(viewId, null);