6

私のアプリケーションでは、リストビューを含む左側のペインがあります。このリストビューで行われた選択は、次に、右側のペインを更新する関連データ、およびアクティビティ内の他のリンクと要素を呼び出します。この設計のため、残りのアクティビティに有用な値を与えるために、左側のペインには常に選択を行う必要があります。

私のアクティビティのonCreateメソッドでは、デフォルトでリストの最初の要素を選択するために、以下を呼び出します。(programListは私のリストビューです)

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

それはすべてうまく機能し、1つのことを除いて、ビューは正しい値で期待どおりに読み込まれます。

選択した要素を強調表示するリストビューの描画可能なセレクターを追加しました。エミュレータでアイテムが物理的にクリックされると、強調表示されますが(CHOICE_MODE_SINGLEを使用しています)、performItemClick()を呼び出しても強調表示されません。私はstackoverflowのヘルプを探して、クリックする前に次のものを使用しようとしましたが、違いはありませんでした。

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

APIを読むと、setSelectionメソッドはタッチインターフェイスでアイテムの状態を設定していないように見えます。私の結果からは、performItemClickメソッドも設定していないようです。私も使ってみました

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

次に、テキストビューの状態を読み取って、それが選択されていることを確認できますが、画面に表示される内容を変更することもできませんでした。

onCreateMethodに、ボタンの状態が異なって描画されるのを妨げているものがありますか?個々のテキストビュー内のドローアブルを無効にし、テキストビュー自体を無効にしてみましたが、それは役に立ちませんでした。テキストビューの背景も変更してみましたが、設定したセレクターがそれを支配しているか、前面に描画されているようです。getTextを使用して中身を読み取ったので、正しいtextViewがあることがわかります。

誰かがこの問題について私を助けてくれるか、解決策を教えてくれるなら、それは大いにありがたいです。

4

1 に答える 1

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

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

于 2012-10-12T23:05:17.803 に答える