getSelectedItemPosition()总是返回-1 [英] getSelectedItemPosition() always return -1
问题描述
我有一个扩展ListActivity的类,它的做工精细
然后在onListItemClick()我用getSelectedItemPosition()和它总是返回-1
P.S getSelectedItemId()返回一些长的数字像994393434
公共类TasksShowActivity扩展ListActivity { 私人光标mCursor;
私人ListAdapter mAdapter; 私有静态最后的String [] = mContent新的String [] {
TasksDbHelper._ID,TasksDbHelper.NAME,
TasksDbHelper.USER}; 公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState); mCursor = managedQuery(
TasksProvider.CONTENT_URI,mContent,NULL,NULL,NULL); mAdapter =新SimpleCursorAdapter(这一点,
R.layout.tasks,mCursor,
新的String [] {TasksDbHelper.NAME,TasksDbHelper.USER},
新的INT [] {R.id.name,R.id.date}); setListAdapter(mAdapter);
} @覆盖
保护无效onListItemClick(ListView中升,视图V,INT位置,最终长ID){
super.onListItemClick(L,V,位置ID); 吐司面包= Toast.makeText(这一点,位置:+ this.getSelectedItemPosition(),Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER,0,0);
toast.show();
}
}
布局:
<的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:方向=垂直
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
机器人:ID =@ + ID / tasks_root_element> <的TextView
机器人:ID =@ + ID /名称
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentLeft =真
机器人:TEXTSIZE =18sp
/>
<的TextView
机器人:ID =@ + ID /日期
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentRight =真
机器人:TEXTSIZE =18sp
机器人:paddingRight =10px的
/>< / RelativeLayout的>
然后在onListItemClick()我用getSelectedItemPosition()和它总是返回-1
块引用>这是因为什么也没有选择。 点击和选择是两码事。 选择在
的ListView
经由指点设备进行(D垫,轨迹球,方向键等)。I have a class that extends ListActivity, its work fine
Then in the onListItemClick() I use getSelectedItemPosition() and its always return -1
P.S getSelectedItemId() return some long number like 994393434
public class TasksShowActivity extends ListActivity { private Cursor mCursor; private ListAdapter mAdapter; private static final String[] mContent = new String[] { TasksDbHelper._ID, TasksDbHelper.NAME, TasksDbHelper.USER}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCursor = managedQuery( TasksProvider.CONTENT_URI, mContent, null, null, null); mAdapter = new SimpleCursorAdapter(this, R.layout.tasks, mCursor, new String[] {TasksDbHelper.NAME, TasksDbHelper.USER}, new int[] {R.id.name, R.id.date}); setListAdapter(mAdapter); } @Override protected void onListItemClick(ListView l, View v, int position, final long id) { super.onListItemClick(l, v, position, id); Toast toast = Toast.makeText(this, "Position: "+this.getSelectedItemPosition() , Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); } }
layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/tasks_root_element"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textSize="18sp" /> <TextView android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:textSize="18sp" android:paddingRight="10px" /> </RelativeLayout>
解决方案Then in the onListItemClick() I use getSelectedItemPosition() and its always return -1
That is because nothing is selected. "Click" and "select" are separate things. "Select" in a
ListView
is done via the pointing device (D-pad, trackball, arrow keys, etc.).这篇关于getSelectedItemPosition()总是返回-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!