2013-10-16 88 views
0

我已經設置了一個編輯文本小部件的列表視圖。該列表視圖填充了一個字符串文件,我想通過點擊該項目對每個項目進行更改。代碼構建和listview按計劃顯示。點擊該項目後,它會獲得焦點,但在鍵盤彈出後沒有任何輸入時會失去焦點。listview上點擊編輯

els_edit_tiles.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<EditText 
    android:id="@+id/listText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" > 
</EditText> 

這是onclicklistener,我假設的變化將需要在這裏並沒有發佈適配器代碼。

private class ListClickhandler implements OnItemClickListener { 

    @Override 
    public void onItemClick(AdapterView<?> Adapter, View view, int position, long arg3) { 

     TextView listText = (TextView) view.findViewById(R.id.listText); 
     String text = listText.getText().toString(); 
     // Toast.makeText(context, text + " " + position, Toast.LENGTH_LONG).show(); 

    } 

} 
+0

而不是在列表視圖上有一個編輯文本小部件,嘗試在項目單擊時彈出一個對話框,然後將編輯文本放在該對話框上。用戶按下時保存文本沒問題。 – Keale

回答

1

我假設你的意思是該項目失去了它的亮點,而不是焦點。無論您點擊哪個焦點,焦點都會出現,並且突出顯示與否。所以,我會解釋消失的亮點的一些選項。

無論好壞,他們都是這樣設計的。你有幾個選擇。一個是子類ListView,並試圖找出如何添加一個粘性突出顯示。 (我嘗試過,並且得到它的工作,但放棄了它的另一個原因 - 我想把列表放在一個ScrollView,它不能用於ListView)。

另一種選擇:使用微調器(又名下拉列表)。這並不完全符合你的要求,但它確實告訴你哪個項目被選中 - 它是在微調器崩潰時顯示的項目。

還有第三種選擇(我實現了這一點) - 使用LinearLayout並將每個項添加爲佈局的子項。你必須實現自己的選擇和突出顯示,但只需要相對較少的代碼(如果需要,我可以提供幫助)。這有效地爲您提供了一個顯示所有項目的列表 - 它不會滾動。您可以將它與其他元素一起包含在ScrollView中,以將整個集合滾動到一起。

+0

在這種情況下,listview只有8個項目。我從8個編輯文本小部件開始,但我想變得靈活一些,因爲我可以將一些i-cons添加到列表視圖中,因爲我的Android知識已擴展。對於突出顯示編輯顯示的位置標記,您是正確的,然後在彈出鍵盤時消失。 – Bobby