girdview获取item内容position错乱

那是你adapter中取position的问题

android gridview 刷新页面后,仍停留在当前位置的方法
android上,我在一个页面上用gridview显示网格式的图片,点击每个图片执行对应的加载操作,执行完成后刷新每个gridview,当时每次刷新完成后,页面跳到最顶端,想让其每次刷新后,页面仍停留在点击位置……

异步刷新用notifydatasetchanged吧,这个会停在当前位置

via http://www.myexception.cn/android/1010914.html

gridView滑动ITEM就乱了

gridview中的item得到焦点

Gridview在回车和鼠标按下时有焦点变化,其实在getfocus时得到的都是grid而不是其中的item,这时需要做一些特殊的处理才能使GridView中的item得到焦点 。

gridview. setOnItemSelectedListener与gridview.onFocuschanged同时存在时, onFocuschanged先相应,onItemSelected不响应

gridview自带onItemClickListener
public void onItemClick(AdapterView<?> parent, View griditem, int position,long arg3),其中griditem指你点击的项;position指的是你点击的项在gridview数据源中的索引。如果你想改变原来的图片,则可以这么做(假设你gridview中item的布局文件里只有一个ImageView):
ImageView image=(ImageView)griditem;
image.setBackgroundDrawable(R.drawable.newimage);//这里写新图片资源名称

 item获得焦点后选中背景色透明

  • 将listSelector属性设成透明:<com.modou.app.Activity.host.GridViewExtend

android:id=”@+id/list_gridView”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:listSelector=”@android:color/transparent”
android:numColumns=”2″
android:cacheColorHint=”#00000000″
/>

  •  android:background=”@drawable/grid_selector_background”

grid_selector_background.xml代码
<?xml version=”1.0″ encoding=”utf-8″?>
<selector xmlns:android=”http://schemas.android.com/apk/res/android”&gt;
<item android:state_window_focused=”false”
android:drawable=”@android:color/transparent” />
<item android:state_selected=”true”
android:drawable=”@drawable/btn_more_pressed_market” />
<item android:state_pressed=”true”
android:drawable=”@drawable/btn_more_pressed_market” />
</selector>

item获得焦点后 使背景圆角

自定义Drawable下的background.xml,根元素选择selector,然后定义solid和corners,最后在main.xml中添加android:listSelector=”@drawable/background”  就ok了。

判断GridView第一个item和最后一个item


A   A   A   A   A   A   A
B   B    B   B   B   B    B

假如上面是一个显示2行的GridView,现在效果需要当GridView上下滑动到最下端的时候”向下的箭头“就会消失,滑动到顶端的时候”向上的箭头“就会消失。

取消GridView中的Button焦点

设置 android:clickable=”false” 即可.

Button焦点优先的问题,否则只能点击到Button,点不到GridView的Item:afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

item点击事件会使里面的Button也出现按压的效果

Difference between onItemClickListener and OnItemSelectedListener of AdapterView

  • OnItemSelectedListener – Interface definition for a callback to be invoked when an item in this view has been selected. GridView移动后选中图片Items的事件处理 /*为GridView添加图片Items移动选中事件监听器*/123.jpg
  • OnItemClickListener – Interface definition for a callback to be invoked when an item in this AdapterView has been clicked.
  • OnItemSelectedListener is used for Spinners, and OnItemClickListener is used for ListViews.
  • 指的是鼠标获得一个条目的焦点,字面上理解是选择一个条目
  • OnItemSelectedListener是用来监听【选中某一项】的事件,不是【点击】某一项的事件,虽然点击能引发选中事件,但不是必然的,一般用按键或者鼠标滚轮移动焦点都会产生这个选中事件

viewHolder

  holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showInfo();
}
});
关于ListView、GridView滚动条定位到选中的那一条内容

  • 获取当前pageadapter的位置 myPager.getCurrentItem()
  • gallery.setSelection(currentIndex_);   public       void      setSelection(int position) //设置选中的条目.

当前页面与前页面的result问题

activity.this.setResult(1); //其中1为标志位
前一个activity中的onActivityForResult中可进行设置
activity.this.finish();

将每个activity的属性中增加 android:launchMode=”singleInstance”

在点击back键启动另一个Activity的时候新建了一个Task,将要返回的Activity放置在这个新建的Task中,而之前的那个Activity是在它自己的Task中,单击back的时候只是把它的Task弹开了,并没有将它本身弹出栈

gridview图片展示,长按进入编辑模式 – 长按更换用户头像

gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){});

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

holder.image1.setImageResource(R.drawable.border);    //添加图片(带边框的透明图片)[主要目的就是让该图片带边框]
holder.image2.setVisibility(View.VISIBLE);  //设置图片右上角的对号显示
imgAdapter.addNumber(position+””);    //把该图片添加到adapter的选中状态,防止滚动后就没有在选中状态了。
selectFileLs.add(loadimg);
}
seclectNumView.setText(“选中”+selectFileLs.size()+”张图片”);
});

gridview的adapterconvertview

public View getView(final int position, View convertView, ViewGroup parent) {}

getview有三个参数,int position, View convertView, ViewGroup parent。其中第三个参数是一个viewgroup,用的比较少,重点介绍前两个参数。
以listview为例,我们的adapter是一个listview的适配器,展现在我们面前的listview就是通过getview方法一条条刷新出来的,滚动条向下滚动的时候会刷新出来一个新的view(每条item对应一个view)
但是当我们滚动条来回滚动的时候呢?需要不停地将现有的view回收,然后刷新出新的view吗?不是。
事实上,当我们把所有的view全部刷新一遍(也就是滚动条从上往下滚动一遍)之后我们会发现,无论我们之后再怎么滚动,都不会再产生新的view,也就是view全部被缓存了。
listview_recycler.jpg
如图,当初次显示listview的时候,系统不断调用adapter的getview方法,假设屏幕能显示8个条目,那就调用8次,然后返回每个条目的view,此时每次调用getview方法时的position参数(第一个参数)就是此时正在刷新的view的位置,而convertview参数(第二个参数)为空。当我们滚动一个条目,即把item1滚动出屏幕之后,之前的7个itemview都不需要再刷新了,只需要刷新后来显示的一个itemview即可,而convertview此时就为滚出屏幕的item1的view

重写getview方法时,首先判断convertview(它的含义上面介绍过了)是否为空,如果为空,也就是第一次显示的话就要新建一个要显示的对象(比如一张图片,一段文字,anything,上面介绍的是一个类,包含了图片,文字等,使用tag来加载到convertview,比较复杂),如果不为空,也就是之前显示过了,那就从convertview中取(显示过了的东西存储在convertview,可以这么理解),把之前的附加信息取出来,也就是用gettag方法。之后就可以初始化你要显示的对象了

Android Gallery’s getView() returning incorrect position

getView is called in order to render (or pre-render, or post-render in some cases) each image in the Gallery. It shouldn’t be depended on to identify which image is selected. Instead, override OnItemSelectedListener in your HelloGallery onCreate() method

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

生活在西班牙

自己动手丰衣足食

BlueAsteroid

Just another WordPress.com site

Jing's Blog

Just another WordPress.com site

Start from here......

我的心情魔方

天才遠私廚

希望能做一個分享各種資訊的好地方

语义噪声

西瓜大丸子汤的博客

笑对人生,傲立寰宇

Just another WordPress.com site

Where On Earth Is Waldo?

A Project By Melanie Coles

the Serious Computer Vision Blog

A blog about computer vision and serious stuff

Cauthy's Blog

paper review...

Cornell Computer Vision Seminar Blog

Blog for CS 7670 - Special Topics in Computer Vision

datarazzi

Life through nerd-colored glasses

Luciana Haill

Brainwaves Augmenting Consciousness

槑烎

1,2,∞

Dr Paul Tennent

and the university of nottingham

turn off the lights, please

A bunch of random, thinned and stateless thoughts around the Web

%d bloggers like this: