Android 更改项目状态仅在单击时可绘制-GalleryView

Android 更改项目状态仅在单击时可绘制-GalleryView,android,android-widget,galleryview,Android,Android Widget,Galleryview,我使用GalleryView显示带有BaseAdapter的字符串 根据项目状态(选择器)更改背景和文本颜色没有问题 但我只想在单击项目时更改背景和文本颜色,而不仅仅是在选中项目时,GalleryView项目状态会随着选中事件而更改,该事件在您四处走动时被调用(居中的项目会自动选中) 总之,如果未单击项目,背景不得更改 如何处理它?您必须捕获选定的事件,并将视图的背景更改为未选定。 存储上次单击的位置以避免更改其选定的背景。此外,存储上次单击的视图,以便在单击另一个项目时恢复未选择的背景,而不会


我使用GalleryView显示带有BaseAdapter的字符串
根据项目状态(选择器)更改背景和文本颜色没有问题 但我只想在单击项目时更改背景和文本颜色,而不仅仅是在选中项目时,GalleryView项目状态会随着选中事件而更改,该事件在您四处走动时被调用(居中的项目会自动选中)

总之,如果未单击项目,背景不得更改

如何处理它?

您必须捕获选定的事件,并将视图的背景更改为未选定。 存储上次单击的位置以避免更改其选定的背景。此外,存储上次单击的视图,以便在单击另一个项目时恢复未选择的背景,而不会抛出:

    gallery = (Gallery) findViewById(R.id.gallery);
    gallery.setAdapter(new DaysGalleryAdapter(this, new int[]{R.layout.gallery_item}, new int[]{R.id.tv_gallery}));
    gallery.setOnItemClickListener(mOnGalleryClick);
    gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

           @Override
           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               if(position != savedClickedPosition) 
                   view.setBackgroundResource(R.drawable.bg_unselected);
           }

           @Override
           public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub

           }

   }); 

   private OnItemClickListener mOnGalleryClick = new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        lastItemSelected.setBackgroundResource(R.drawable.tab_bg_unselected);
        view.setBackgroundResource(R.drawable.tab_bg_selected);
        lastItemSelected = view;
        savedClickedPosition = position;
        // Do stuff
    }       
   };
gallery=(gallery)findViewById(R.id.gallery);
setAdapter(新DaysGalleryAdapter(this,新int[]{R.layout.gallery_item},新int[]{R.id.tv_gallery});
gallery.setOnItemClickListener(MongaleryClick);
gallery.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
如果(位置!=savedClickedPosition)
视图.setBackgroundResource(R.drawable.bg_未选中);
}
@凌驾
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
}
}); 
private OnItemClickListener MongaleryClick=新建OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
lastItemSelected.setBackgroundResource(R.drawable.tab\u bg\u未选中);
视图.setBackgroundResource(R.drawable.tab\u背景选中);
lastItemSelected=视图;
savedClickedPosition=位置;
//做事
}       
};
如果对你来说太晚了,Fluckysan至少希望它能帮助那些有同样问题的人。
快乐编码

您必须在xml中使用属性
android:listSelector
实现一个列表选择器,然后将此样式设置为列表视图。

是的,我最终这样做了(在另一个线程上张贴我的解决方案:)。它不是很性感,但很管用。谢谢你的回答:)好的,福鲁克桑,我很高兴你找到了另一个解决方案。对于其他对我的答案感兴趣的人,您还需要使用适配器使用上次单击的位置更改背景。当最后一次单击的位置从屏幕上消失并返回时,这会有很大帮助。今天,我终于让它100%正常工作了。Fluckysan,你应该检查一个答案来结束这个问题:)列表选择器在所选项目更改时更改背景图像,对于图库,如果你只想在单击该项目时更改背景图像,这是不可能的