2015-04-02 29 views
2

使用此代碼,在setSelection指令後執行System.out.println時,返回-1,我不知道爲什麼。應用到ListViewListView的getSelectedItemPosition()返回-1

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.composition); 

     lv = (ListView) findViewById(android.R.id.list); 
     cabecera = (TextView) findViewById(R.id.cabecera); 
     information = (TextView) findViewById(R.id.paciente); 

     proceso = new ArrayList<>(); 
     proceso.add("- Item1"); 
     proceso.add("- Item2"); 

     adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.customizedlistitem,proceso); 
     lv.setAdapter(adapter); 

     lv.post(new Runnable() { 
      @Override 
      public void run() { 
       lv.setSelected(true); 
       lv.setSelection(0); 
       adapter.notifyDataSetChanged(); 
       System.out.println("Selected Item onCreate: "+lv.getSelectedItemPosition()); 
       System.out.println("Get Count en onCreate: "+lv.getCount()); 
      } 
     }); 

     nextBundle = new Bundle(); 
     nextBundle.putString("name",proceso.get(position)); 

     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       in = new Intent(getApplicationContext(),Check.class); 
       in.putExtras(nextBundle); 
       startActivity(in); 
      } 
     }); 
    } 

getCount將()函數返回一個正確的值:2

我已經搜索找到一個解決辦法,但我已閱讀並測試不能解決所有問題。

UPDATE:

此代碼:關於主要活動

listPacientes = new ArrayList<>(); 
listPacientes.add("Elemento 1"); 
listPacientes.add("Elemento 2"); 
listPacientes.add("Elemento 3"); 

adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.customizedlistitem,list); 
lv.setAdapter(adapter); 

lv.setSelection(1); 
System.out.println(lv.getSelectedItemPosition()); 

作品。 「System.out」返回1,但下一個Activities中的相同代碼返回-1,爲什麼?我無法理解它。

+0

我認爲lv.getSelectedItemPosition()將在listview.onitemselectedlistener工作... – 2015-04-02 10:34:36

回答

0

你是第一次選擇單元格,然後通過調用adapter.notifyDataSetChanged();刷新ListView - 這樣你的選擇被刪除。

+0

我已刪除指令和程序仍然是同樣的問題 – adri1992 2015-04-02 10:57:21

0

使用lv.getSelectedItemPosition()方法onItemClick()裏面的方法。你會得到正確的價值在這裏

+0

謝謝,我會測試它。 但是,我不知道爲什麼,在其他具有幾乎相同的代碼的Activity中,函數返回正確的值.. :( – adri1992 2015-04-02 10:58:37