Articles of listview

setOnItemClickListener不响应自定义ListView

我写了一个自定义适配器的列表视图,但是当我尝试实现点击事件列表项,我发现它没有响应,我会很高兴,如果有人build议我一个解决scheme。 public class TourList extends ListActivity { …. setContentView(R.layout.tourlist); ….. getListView().setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view,int position, long id) { //i couldn't reach here Log.v(TAG,"did u get me"); } }); adap = new MyAdapter(TourList.this,mylist); getListView().setAdapter(adap); 和我的自定义适配器是 private class MyAdapter extends BaseAdapter { ArrayList<HashMap<String,String>> elements; Context ctx; public MyAdapter(Context context, ArrayList<HashMap<String,String>> mylist) { […]

使用ViewHolder滚动ListView时图像被混乱

当用户滚动ListView时,我的问题是连接的。 我环顾四周,看到了很多“listview lazy image”的例子,也看了说到“good practice”的Google IO的video来做这个工作。 但是,当用户上下移动ListView时,我的问题仍然存在。 发生什么事情是,当滚动列表时,在每个项目上加载的图像被洗牌,并且每个项目的化身到下一个项目结束。 我不知道我是否清楚,但我会与形象展示。 当您开始时,没有图像的项目留下标准图像。 图1: http : //boxandroid.com/app/weguide/itsok.png在用户滚动ListView之前: http : //boxandroid.com/app/weguide/nook.png 请注意,图片是洗牌其他项目之间。 在我的适配器中: public View getView(int position, View convertView, ViewGroup parent){ ViewHolder viewHolder = new ViewHolder(); if(convertView == null){ convertView = _inflate.inflate(R.layout.layout_list, null); viewHolder.text = (TextView) convertView.findViewById(R.id.title); viewHolder.owner = (TextView) convertView.findViewById(R.id.owner); viewHolder.image = (ImageView) convertView.findViewById(R.id.thumb); convertView.setTag(viewHolder); }else{ viewHolder = […]

如何在listview中添加EditText,并在所有行中dynamic获取它的值?

我有一个ListView中的checkbox和EditText和Textview。 它从列表中获取文本视图的值。 checkbox将被dynamic检查。 以同样的方式EditText也可以dynamicinput。 现在我的问题是,当我在编辑文本中input文本后滚动列表视图(上下),我无法得到键入的值。 我也检查checkbox。 但是使用这个位置,我把它设置正确。 我无法知道如何正确设置EditText值到列表。 请帮帮我。 这是我的代码: main.xml:(主要的xml启动) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/my_list" android:layout_width="fill_parent" android:layout_height="250px" /> <Button android:text="Save" android:id="@+id/btnSave" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> row.xml:(ListView Row) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@+id/label" android:textSize="30sp"/> <CheckBox android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:text="" android:id="@+id/txtAddress" […]

Android:向ArrayAdapter添加数据时可见的ListView图像闪烁

我有一个扩展ArrayAdapter的自定义适配器,它实现了视图持有者模式,以显示来自Web服务的数据(文本+图像)。 对于图片的延迟加载,我使用Android开发人员网站的高级培训中的asynchronous任务模式, 我也使用磁盘+ RAM的位图caching。 当有额外的数据要检索,我添加一个页脚视图,点击它从Web服务检索额外的数据,并将其添加到适配器。 问题是,当这个新的数据被添加时,一些可见的图像正在改变,并立即改变回来,这导致了一个奇怪的闪烁。 除了一切工作正常,滚动平稳。 据我所知,当新的数据被添加时正在刷新可见视图时,正在发生图像变化。 有没有办法绕过这种不需要的行为? 这是下载和pipe理asynchronous任务的类 public class ImageDownloader { private ImageCache mCache; private int reqWidth; private int reqHeight; public void download(String url, ImageView imageView, ImageCache imageCache, int reqHeight, int reqWidth) { mCache = imageCache; this.reqHeight = reqHeight; this.reqWidth = reqWidth; if (cancelPotentialDownload(url, imageView)) { BitmapDownloaderTask task = new BitmapDownloaderTask(imageView); DownloadedDrawable […]

如何覆盖特定区域的列表项文字颜色?

假设我们有自定义ListView ,它通过在其中绘制一些矩形来扩展onDraw()方法。 class Listpicker extends ListView { //..Some other methods here..// @Override protected void onDraw(android.graphics.Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(glassPickerBitmap, null, glassRect, semiTransparrentPaint); } } 绘制的位图代表某种矩形的玻璃,其宽度等于列表视图的宽度和高度。 我想要的是,当列表项滚动到这个矩形用于绘制文本的颜色(不是所有的项目与背景等)将改变成另一种颜色。 因此,例如,在列表项适合只有文本的一半高度符合glassPickerBitmap的情况下,列表项的外部部分应该保持其正常的颜色, glassPickerBitmap的部分应该改变它的文本颜色。 列表项是简单的TextViews没有任何背景。 这怎么能实现呢? 也许任何ColorFilter分配给Paint ? 但是哪里? 当ListView被滚动时, ListView onDraw()方法甚至不会被调用…可以在自定义视图内完成这个工作,例如,这将是ListView的项目吗? 或者可能是一些颜色/着色器/不知道可以在这里使用什么覆盖,但在哪里 ? 编辑(添加图像的例子): 这里是一些来自真实应用的作物的例子。 有2个ListView :一个在左边,另一个在右边。 玻璃是灰色的矩形。 现在,左边的名单中已经select了“美元”货币。 而我正在以这种方式滚动ListView ,这个select介于USD和阿富汗阿富汗之间。 现在,我想要的是,左边的ListView中的美元货币将被绘制成红色(确切的颜色现在无关紧要,稍后我会将其更改为有意义的),同时, “美国美元“和”阿富汗阿富汗尼“在右边的ListView的顶部将被绘制成同样的红色。 这种颜色变化应该以dynamic的方式进行 – 只有在滚动列表时,才能更改玻璃矩形下的文本部分的颜色。 *好的,欧元和美元是用非标准青色绘制的特殊货币。 问题是至less有白色的文字。 但是,如果能够改变青色的话,那就太好了。

使用自定义BaseAdapter从ListView中删除项目

我正在使用自定义的BaseAdapter来显示ListView上的项目。 这些项目只是保存在ArrayList中的string。 列表项目有一个删除button(大红色X),我想从ArrayList中删除项目,并通知ListView更新自己。 但是,我试过的每个实现都会得到神秘的位置号码,例如点击第2项的删除button将删除第5项。 这似乎几乎是完全随机的。 有一点要注意的是元素可能会重复,但必须保持相同的顺序。 例如,我可以有两次“爱尔兰”,作为元素3和7。 我的代码如下: private static class ViewHolder { TextView lang; int position; } public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.language_link_row, null); holder = new ViewHolder(); holder.lang = (TextView)convertView.findViewById(R.id.language_link_text); holder.position = position; final ImageView deleteButton = (ImageView) convertView.findViewById(R.id.language_link_cross_delete); […]

系统服务不可用于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) […]

使用drag-sort-listview(DSLV)时,不会触发setOnItemLongClickListener和setOnItemClickListener

我使用了Carl Bauer(https://github.com/bauerca/drag-sort-listview)的优秀的drag-sort-listview来实现一个拖拽式启用列表视图。 但是,我的要求是不需要在列表中拖动句柄,而是允许用户使用项目本身拖动列表项目。 通过将@ id / drag属性设置为列表项本身,我已经得到了部分工作。 但是,它具有不响应itemClick和itemLongClick事件的副作用。 有没有办法让项目点击/长时间点击工作,没有一个单独的可拖动布局? 作为参考,我的代码如下所示 – ListView.xml: <com.mobeta.android.dslv.DragSortListView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:dslv="http://schemas.android.com/apk/res/com.myproject" android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" dslv:collapsed_height="1dp" dslv:drag_scroll_start="0.33" dslv:max_drag_scroll_speed="0.5" /> ItemView.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="@dimen/list_item_height" android:orientation="horizontal"> <CheckBox android:id="@+id/check_box" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical"/> <TextView android:id="@+id/drag" android:layout_width="0dp" android:layout_height="fill_parent" android:padding="@dimen/list_padding" android:gravity="center_vertical" /> </LinearLayout> Activity.java: DragSortListView listView = (DragSortListView) view.findViewById(R.id.list); listView.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, […]

ListView分隔符使用CursorAdapter

我有一个使用CursorAdapter填充的ListView。 我也想在我的ListView中有一些分隔符。 我已经用ArrayAdapter完成了这个,但是我不确定如何用CursorAdapter完成这个。 有没有这样的策略? 还是我运气不好?

从SQLite延迟加载

我的数据库中有大约4500个条目。 在ListView中显示它们的最好方法是什么? 我应该在应用程序初始化的时候一次加载它们,还是应该使用延迟加载? 该列表也将被search和过滤。 你能不能也指点我一些好的文章,会给我一个更好的主意。 请给我build议。