2016-09-19 85 views
1

我有一个ListView,当我检查一行时,单击“isSelected()”总是返回false,即使它先前已被选中,我第二次检查它会返回true .. ListView需要点击两次,才能使“isSelected()”工作...我已经看到过类似的问题,但没有提出的解决方案工作..Android:isSelected第一次不在ListView中工作

注意:我使用自定义ListAdapter,但如我听该行的点击,所以我不能用在列表视图

row.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(final View v) { 

      v.clearFocus(); 

      if (v.isSelected()) 
      { 

至于建议我增加了一个setOnItemClickListener到ListView setOnItemClickListener,但现在它ð oesn't如果选择检测,它始终返回false

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, 
           long id) { 

      Log.v("myApp", "onItemClick is " + position); 

      if (v.isSelected()) 
      { 
       v.setSelected(false); 

       Log.v("MyApp", "fiend deselect row " + position); 

       v.setBackgroundResource(R.color.default_color); 

      } else { 
       Log.v("MyApp", "fiend click row " + position); 

       v.setSelected(true); 

       v.setBackgroundResource(R.color.pressed_color); 

      } 

     } 
    }); 
+0

不添加监听到ListView该行 – XxGoliathusxX

+0

难道说,但现在它的其总是返回false为“IsSelected()” – cal

回答

1

设置listView.onItemClicklistener代替row.setOnClickListener 这样的:

listView.setOnItemClickListener(new OnItemClickListener() { 
          @Override 
          public void onItemClick(AdapterView<?> a, View v, int position, 
            long id) { 


           } 
         }); 
+0

我正在使用自定义的ListAdapter,我正在监听行点击,所以我不能使用列表视图上的setOnItemClickListener – cal

+0

你不需要监听行点击,如果你设置onItemClickListener,您可以在其中获得位置用户点击的项目。 –

+0

看到我上面的编辑,现在它总是返回false为“isselected” – cal

相关问题