2012-10-12 16 views
6

私のアプリケーションでは、リストビューを含む左ペインがあります。このリストビューで行われた選択は、右ペインを更新する関連データ、およびアクティビティ内の他のリンクと要素を呼び出します。この設計のために、残りのアクティビティに有用な値を与えるために、左ペインには常に選択が行われなければなりません。Android:プログラムでクリックされたリストビュー項目を選択状態に設定する

私の活動のonCreateメソッドでは、デフォルトでリストの最初の要素を選択するために、以下を呼び出します。一つのことを除いて、正しい値で期待通りすべてが素晴らしい作品とビューロードし

programList.performItemClick(programList, 0, programList.getItemIdAtPosition(0); 

(programListは私のリストビューです)。

選択した要素を強調表示するリストビュー用のドロウアブルセレクタを追加しました。アイテムがエミュレータで物理的にクリックされると、強調表示されます(私はCHOICE_MODE_SINGLEを使用しています)が、performItemClick()を呼び出すと強調表示されません。私はstackoverflowの助けを見回して、クリックの前に以下を使用しようとしましたが、違いはありませんでした。

programList.requestFocusFromTouch(); 
    programList.setSelection(0); 

setSelection方法は、タッチインターフェイスの下の項目の状態を設定していない、と私の結果から、performItemClick方法は、どちらかないと思われるように聞こえるAPIを読んでから。また、私はその後、私はテキストビューの状態を読み、それが選択されていることを見ることができます

programList.getAdapter().getView(0, null, null).setSelected(true); 

を使用しようとしましたが、それはまた、画面上に表示される内容を変更するには、何もしませんでした。

ボタンの状態が異なって描画されないようにする何かがonCreateMethodにありますか?私は、個々のテキストビュー内でdrawableを無効にし、テキストビュー自体を無効にしようとしましたが、それは助けになりませんでした。私はまた、テキストビューの背景を変更しようとしましたが、私が設定したセレクタがそれを管理しているか、前面に表示されているようです。私は正しいtextViewを持っていることを知っています。なぜなら、getTextを使って内部の内容を読み取っているからです。

誰かがこの問題を解決するのに役立ち、解決策を教えてくれれば、非常に感謝しています。

答えて

4

トリックは、アダプタのgetView()メソッドをオーバーライドすることです。これを試してみてください:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final View renderer = super.getView(position, convertView, parent); 
    if (position == index_of_selected_item) { 
     renderer.setBackgroundResource(android.R.color.darker_gray); 
    } 
    return renderer; 
} 

もちろん、背景色を「アクティブ」であることを示す色に設定できます。

+0

ありがとうございました。 listview.setSelector()メソッドを使用してこの作業を行う方法はありますか、getView()を使用して残りの状態を設定する必要がありますか?setSelectorはxmlリソースからずっと便利です。エミュレータでマウスをクリックしたときとクリックしたイベントをプログラマチックに呼び出すとどうなるかを知ってほしい。 – ndw

+0

これは、私があなたのステートメントに他のものを追加して、他の色に設定したとしても、アイテムの選択を解除することはできません。ビューの取得は、ビューがロードされたときに初めて呼び出されます。そのリストビュー項目の背景が設定されると、それはそのままになります。 [this](http://stackoverflow.com/questions/10296846/android-listview-select-first-item-after-loading-datas)私に近づいていますが、彼の説明は不完全です。 – ndw

+2

index_of_selected_itemの値を取得する方法 – Dimitri

関連する問題