Listview没有持有选择索引

时间:2015-05-01 14:05:48

标签: android listview

我在单选模式下有一个列表视图。当按下按钮时,我希望能够获得该列表视图的选择值。但是,它总是返回-1,即使我在点击监听器中设置了选择。发生了什么事?我只能从onClick获取此信息吗?

  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.

1 个答案:

答案 0 :(得分:1)

从我从这个类似问题中收集到的内容:

listView.getSelectedItemPosition() return index-1

您的Button OnClick是否会中断项目选择。如果未选择任何项,则getSelectedItemPosition()返回-1。因此,在处理所选位置之间生成另一​​个触摸事件的事实会中断位置,实际上会清除选择。导致getSelectedItemPosition()返回-1。

正如我在评论中提到的,你可以在类范围中定义一个int varbele并在那里保存你的选择,这样你就可以随时提取它而不用担心选择被清除。