android中为gridview项目设置bgcolor时出现问题

android中为gridview项目设置bgcolor时出现问题,android,android-layout,gridview,Android,Android Layout,Gridview,这可能很简单,但我找不到解决方案。问题是在onitemlongclicklistener方法内设置gridview项的背景色 我有两个线性布局,一个包含textview和gridview,另一个包含一些按钮(我将此布局设置为屏幕顶部的菜单栏)。我使用setVisibility(View.GONE)在屏幕上隐藏第二个项目,当我执行ItemLong单击gridview项目时,第二个项目将使用setVisibility(View.VISIBLE)显示,同时我要更改单击/选定项目的颜色 一切正常,但无论

这可能很简单,但我找不到解决方案。问题是在onitemlongclicklistener方法内设置gridview项的背景色

我有两个线性布局,一个包含textview和gridview,另一个包含一些按钮(我将此布局设置为屏幕顶部的菜单栏)。我使用setVisibility(View.GONE)在屏幕上隐藏第二个项目,当我执行ItemLong单击gridview项目时,第二个项目将使用setVisibility(View.VISIBLE)显示,同时我要更改单击/选定项目的颜色

一切正常,但无论何时第二个布局可见,还是无论何时滚动gridview,单击/选择的bgcolor都会消失

我尝试了很多方法,但都没能解决这个问题。请看一下我的代码,告诉我我做错了什么

gv.setOnItemLongClickListener(new OnItemLongClickListener() {
          public boolean onItemLongClick(AdapterView<?> parent, View strings,
                          int position, long id) {
              final Option o = dir.get(position);
             //gv.performItemClick(gv, position,gv.getItemIdAtPosition(position));

              /* if(pos!=-1) 
              {
              gv.getChildAt(pos).setBackgroundColor(0xffffffff);

              }*/
              strings.setSelected(true);
             // TextView tx=(TextView)strings.findViewById(R.id.grid_item_label);
            //  tx.findViewById(id).setBackgroundColor(0xff0000ff);
             /*if(!o.getData().equalsIgnoreCase("o")){


                 //gv.getChildAt(position).setSelected(true);    
                 fill(new File(new File(o.getPath()).getParent()),position);

          }*/
             /*try
             {
                 gv.getSelectedView().setBackgroundColor(0xffcccccc);
             }
             catch(Exception e){
                Toast.makeText(FffsdActivity.this, "ok\n"+e,Toast.LENGTH_SHORT).show();

             }*/

             /*for(int i=0;i<nofifo;i++)

              {
                 try{
                 if(gv.getChildAt(i).isSelected())
                 {
                       gv.getChildAt(i).setBackgroundColor(0xffbbbbbb); 
                        // Toast.makeText(FffsdActivity.this, "yes ok\n"+i,Toast.LENGTH_SHORT).show();

                 }
                 else{
                           gv.getChildAt(i).setBackgroundColor(0xffffffff); 
                         //Toast.makeText(FffsdActivity.this, "no ok\n"+i,Toast.LENGTH_SHORT).show();

                 }
                 }
                 catch(Exception e)
                 {
                Toast.makeText(FffsdActivity.this, "i wanna e :"+e+"\n"+i,Toast.LENGTH_SHORT).show();

                 }
                try{
                 gv.getChildAt(i).setSelected(false);
                   //Toast.makeText(FffsdActivity.this, "gv ok\n"+i,Toast.LENGTH_SHORT).show();

                }catch(Exception e){
                      Toast.makeText(FffsdActivity.this, "i  wanna setselected e :"+e+"\n"+i,Toast.LENGTH_SHORT).show();

                }

              }*/


             // Toast.makeText(FffsdActivity.this, "i wanna c :"+gv.getChildAt(position).isSelected(),Toast.LENGTH_LONG).show();
             //gv.getSelectedView().setBackgroundColor(0xffcccccc);         
             pos=position;
            if(o.getData().equalsIgnoreCase("parent directory"))
            {
                fill(new File(o.getPath()),-1);
            }
             else if(o.getData().equalsIgnoreCase("folder"))
            {
                 llfftools.setVisibility(View.VISIBLE);
                 TranslateAnimation slide = new TranslateAnimation(0, 0,-llfftools.getHeight(),0 );   
                 slide.setDuration(100);   
                 slide.setFillAfter(true);   
                llfftools.startAnimation(slide); 
                //fill(new File(new File(o.getPath()).getParent()));

                onFolderClick(o);
                 //gv.getChildAt(position).setBackgroundColor(0xffaaaaaa);


            }
gv.setOnItemLongClickListener(新的OnItemLongClickListener(){
公共布尔值长单击(AdapterView父项、视图字符串、,
内部位置,长id){
最终选项o=直接获取(位置);
//gv.performItemClick(gv,position,gv.getItemIdAtPosition(position));
/*如果(位置!=-1)
{
gv.getChildAt(位置).setBackgroundColor(0xFFFFFF);
}*/
strings.setSelected(true);
//TextView tx=(TextView)strings.findViewById(R.id.grid\u item\u label);
//tx.findViewById(id).setBackgroundColor(0xff0000ff);
/*如果(!o.getData().equalsIgnoreCase(“o”)){
//gv.getChildAt(位置).setSelected(正确);
填充(新文件(新文件(o.getPath()).getParent()),位置);
}*/
/*试一试
{
gv.getSelectedView().setBackgroundColor(0xFFCCCC);
}
捕获(例外e){
Toast.makeText(FffsdActivity.this,“ok\n”+e,Toast.LENGTH\u SHORT.show();
}*/
/*对于(inti=0;i10)?mobileValues.get(position.getName()。子字符串(0,9)+“.”:mobileValues.get(position.getName();
if(mobileValues.get(position).getPosition()==position&&mobileValues.get(position).getPosition()!=-1)
{
textView.setText(iname);
textView.setTextColor(0xff0000ff);
}
否则{
textView.setText(iname);
}
//基于选定文本设置图像
最终ImageView ImageView=(ImageView)gridView.findViewById(R.id.grid\u item\u image);
/*setOnLongClickListener(新的OnLongClickListener(){
仅长按公共布尔值(视图v){
gridView.setBackgroundColor(0xffaaaaaa);
//TODO自动生成的方法存根
返回false;
}
});*/
字符串mobile=mobileValues.get(position.getData();
如果(移动==“o”)
{
//无所事事
setImageResource(R.drawable.white);
}
else if(mobile==“父目录”)
{
setImageResource(R.drawable.parent);
}
else if(手机==“文件夹”)
{
setImageResource(R.drawable.folderg);
}
否则{
setImageResource(R.drawable.picicon);
}
返回gridView;
}
public int getCount(){
返回mobileValues.size();
}
公共对象getItem(int位置){
返回null;
}
公共长getItemId(int位置){
返回0;
}
}

提前感谢,如果您还需要其他信息,请告诉我……

在您的XML中,将android:background属性设置为如下XML:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/home_btn_sessions_pressed"
    android:state_focused="true"
    android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_pressed"
    android:state_focused="false"
    android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_selected" android:state_focused="true" />
<item android:drawable="@drawable/home_btn_sessions_default"
    android:state_focused="false"
    android:state_pressed="false" /> </selector>


不需要在此处编写Java代码。

您好,谢谢您的回复,我也尝试过这一个,但不起作用。您好,我找到了解决问题的方法,而且效果非常好。这是真正帮助我的页面:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/home_btn_sessions_pressed"
    android:state_focused="true"
    android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_pressed"
    android:state_focused="false"
    android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_selected" android:state_focused="true" />
<item android:drawable="@drawable/home_btn_sessions_default"
    android:state_focused="false"
    android:state_pressed="false" /> </selector>