我在单选模式下有一个列表视图。当按下按钮时,我希望能够获得该列表视图的选择值。但是,它总是返回-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.
答案 0 :(得分:1)
从我从这个类似问题中收集到的内容:
listView.getSelectedItemPosition() return index-1
您的Button OnClick是否会中断项目选择。如果未选择任何项,则getSelectedItemPosition()返回-1。因此,在处理所选位置之间生成另一个触摸事件的事实会中断位置,实际上会清除选择。导致getSelectedItemPosition()返回-1。
正如我在评论中提到的,你可以在类范围中定义一个int varbele并在那里保存你的选择,这样你就可以随时提取它而不用担心选择被清除。