getSelectedItemPosition() винаги връща -1

Имам клас, който разширява ListActivity, работи добре

След това в onListItemClick() използвам getSelectedItemPosition() и винаги връща -1

P.S. getSelectedItemId() връща дълго число като 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();
    }
}

оформление:

<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>

person Oleg Beat    schedule 23.05.2012    source източник
comment
Публикувайте кода си, моята кристална топка е в магазина днес.   -  person Barak    schedule 23.05.2012
comment
Вече използвате final long id от списъка с аргументи onListItemClick   -  person Oleg Beat    schedule 23.05.2012
comment
Защо не използвате параметъра position, който идва? Няма нужда да използвате метода... информацията вече е там.   -  person Barak    schedule 23.05.2012


Отговори (1)


След това в onListItemClick() използвам getSelectedItemPosition() и винаги връща -1

Това е така, защото нищо не е избрано. „Щракване“ и „избиране“ са различни неща. „Изборът“ в ListView се извършва чрез посочващото устройство (D-pad, тракбол, клавиши със стрелки и т.н.).

person CommonsWare    schedule 23.05.2012