2016-09-19 81 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

相關問題