Articles of listadapter

使用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);

自定义视图缺less工具用于适配器的构造函数

我得到以下警告: 自定义视图com / example / view / adapter / SomeAdapter缺less工具所使用的构造函数:(Context)或(Context,AttributeSet)或(Context,AttributeSet,int) 在我的类SomeAdapter中扩展了一些扩展了ArrayAdapter的BaseAdapter public class SomeAdapter extends BaseAdapter{} public abstract class BaseAdapter extends ArrayAdapter<SomeModel>{} 该警告存在于具体适配器中,但不在抽象BaseAdapter中。 有没有人听说过这方面的警告? AFAIK Android通过ViewConstructorDetector检查超类的名称来检查类是否扩展视图: private static boolean isViewClass(ClassContext context, ClassNode node) { String superName = node.superName; while (superName != null) { if (superName.equals("android/view/View") //$NON-NLS-1$ || superName.equals("android/view/ViewGroup") //$NON-NLS-1$ || superName.startsWith("android/widget/") //$NON-NLS-1$ && !((superName.endsWith("Adapter") //$NON-NLS-1$ […]

如何asynchronous填充列表视图?

我想知道我应该如何实现一个ListAdapter加载其视图asynchronous到一个ListView ? 我想这样做是因为我用来自我的数据库的信息来填充列表,这使得我的活动时间有点慢。

图像适配器泄漏内存

我有一个简单的ListActivity显示图像,我在ImageAdapter类的构造函数中为我的OkHttpClient for Picasso Builder初始化: 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()我使用毕加索在ImageView中加载图像: Picasso.with(context).load(xyzUrl).fit().centerCrop().into(vImage); 它运行良好,但在设备的旋转中,我看到堆大小有时会慢慢增长,有时很快,有时会保持稳定。 它很less会下降。 我是在泄漏内存还是在代码中出现错误? 编辑:我插入毕加索的getView()调用后的代码 if (BuildConfig.DEBUG) { Log.i("HEAP SIZE", String.valueOf((Runtime.getRuntime().totalMemory() / 1024) – (Runtime.getRuntime().freeMemory() / 1024))); } 我发现在将位图加载到ImageView后,堆大小的增长发生在getView() 。 […]

自定义行在listPreference?

我正在尝试创build一个ListPreference,但以某种方式禁用其中一个项目。 有点像灰色的东西,而不是有能力select它。 这将是一个即将到来的function,我希望它在列表中不能select。 我创build了一个自定义的ListPreference类,并在该类中定制了一个适配器,希望能够使用适配器来创build我想要的东西。 代码工作,它设置适配器,但没有适配器function被调用。 我在方法上设置了断点,比如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 […]