2011-12-06 12 views
0

私はListViewを持って、それは3行を持っています。最初は最初の行のみをクリック可能にし、その後は2番目の行をクリック可能にしてから3番目の行をクリック可能にするなど、クリック可能な行を制御する必要があります。また、私はこれを追加したい。各行をクリックするたびに、AlertDialogが単一の選択項目で開きます。選択した値を取得した直後に、他の行をクリック可能にすることができます。この状況をどうやって管理できますか?私を助けてください。Android ListViewコントロールの行をクリック可能

+0

あなたはAdapter..Iとして何を使っているがListAdapter、CursorAdapterを意味ですか? – havexz

+0

私はBaseAdapterを使用していますし、行をクリックした後、単一の選択項目を持つAlertDialogがあります。 – adaclks

答えて

0

リスナーをlistviewに追加すると、onItemClick関数がクリックした位置を受け取ります。 int変数を0に初期化して、どの行を実行可能にするかを知ることができます。このような

何か:

int current_position = 0; 

myList.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id){ 
     if(position == 0) //Your stuff (current_position = 1) 
     if(position == 1) // 
    } 
}); 

希望これは...

+0

私は詳細な方法で私の問題を説明すべきだと思います。 3行あり、すべての行をクリックした後、私は単一の選択項目を持つAlertDialog.Builderを作成します。 AlertDialogを開いた後、ユーザーが「戻る」を押すと選択した値を取得できないため、あなたの提案はうまくいきますが、私の状況では問題が生じる可能性があります。これに加えて、current_positionをインクリメントすると、ユーザーはもう一方の行をクリックします。 – adaclks

0

リストビューをシミュレートするために、3行でScrollViewを使用することをお勧めに役立ちます。その後、各行のクリックイベントを簡単に制御できます。

+0

お返事ありがとうございます。明確な例を示してください。 – adaclks

0

BaseAdapterを使用している場合は、isEnabled apiを試してみてください。このAPIはセパレータのためのものです。 2行目と3行目についてはfalseを最初に返してから、ロジックに基づいて真を返すことができます。

もう1つのapi areAllItemsEnabledが返されます。falseです。

参考:

http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(inthttp://developer.android.com/reference/android/widget/BaseAdapter.html#areAllItemsEnabled()

+0

私はこの方法で使いました。本当に感謝しています。しかし、私は少し問題がある、私は3行以上のヘッダーがあり、私は簡単にどの行がクリック可能ですが、ヘッダーを制御することはできません。最初の行については、BaseAdapter.isEnabled(0)を呼び出しています。ヘッダー-1は機能していません。 – adaclks

+0

あなたは 'isEnabled'を呼んでいますか?だから、あなたは4行あり、最初のものはヘッダーだと言っています。その場合、ヘッダはインデックス0になります。 – havexz

関連する問題