2015-05-01 33 views
-1

我在單選模式下有一個listview。當按鈕被擊中時,我希望能夠獲得該列表視圖的選擇值。但是,它總是返回-1,即使我在click監聽器中設置了選擇。這是怎麼回事?我只能從onClick獲取這些信息嗎?Listview not holding selection index

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.reorderlist); 


    //setup Adapter to ArrayList of String 
    origAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, originalViewingList); 

    //set ListView 
    origLV = (ListView) findViewById(R.id.originalPoolList) ; 
    origLV.setAdapter(origAdapter); 

    //setup selected item 
    origLV.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      //save selection index 
      origLV.setSelection(position); 
     } 
    }); 
} 


public void onMoveListDown(View v) { 

    // get selected item 
    // ?? Returns -1 ?? 
    int selPos = origLV.getSelectedItemPosition(); 

} 

這裏的佈局XML:

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="188dp" 
    android:id="@+id/originalPoolList" 
    android:layout_gravity="center_horizontal" 
    android:background="?android:attr/activatedBackgroundIndicator" 
    android:listSelector="#666666" 
    android:choiceMode="singleChoice" /> 

編輯:細說,我從列表視圖中選擇一個項目。當我點擊MoveList按鈕時,我想獲取選定的項目位置。該按鈕的onClick已連接到onMoveListDown。每當我打在列表中的第一項,然後單擊按鈕,值selPos = -1而不是0

+0

你什麼時候調用onMoveListDown()? –

+0

它連接到Button的OnClick() – Kat

+0

你可以顯示發生了什麼? –

回答

1

從我從這個類似的問題收集:

listView.getSelectedItemPosition() return index-1

那是你的按鈕OnClick中斷項目選擇。如果沒有選擇項目,getSelectedItemPosition()返回-1。因此,在處理選定位置之間生成另一​​個觸摸事件會中斷位置,事實上會清除選擇。導致getSelectedItemPosition()返回-1。

正如我在評論中提到的那樣,您可以在類作用域中定義一個int類型的變量並將其保存在那裏,這樣您就可以隨時提取它,而無需擔心選擇被清除。

+0

如果在onItemClick運行之後完成項目選擇,它如何中斷?當我通過時,它會按順序通過它。 – Kat

+0

您的按鈕單擊事件(調用onMoveListDown())將清除選擇。 onMoveListEvent()在按鈕點擊事件後執行,所以getSelectedItemPosition()返回-1。 –

+0

那麼,它失去了它的選擇,當它失去了重點? – Kat