2011-12-20 5 views
2

TableLayoutを使用して商品カテゴリを抽出することを選択しました。TableLayout onClickListener:行/列を取得

データは動的に取得され、レンダリングされます。私はそれにTableRowとImageViewの両方を追加しています。

TableRowごとに3つのアイテムがある場合、onClickListenerはどのように処理できますか?

は、私が使用し、レイアウトを変更することはできませんので、私は現在の状況に解決策を探しています

+0

このテーブルにデータをロードするにはどうすればよいですか?そして、なぜあなたは使用されたレイアウトを変更できませんか?行のアイテムに対して 'duplicateParentState'をtrueに設定し、行のonClickListenerを設定します。 – Jordi

+0

@ Jordiプログラムで読み込みます。組織上の理由からレイアウトを変更することはできません。あなたは最後の文が私のために意味をなさない、あなたは答えとしてそれを提供することができますか?ありがとう –

+0

@MarekSebera:あなたはtablerowまたはtablerow自体の要素のクリックを検出したいですか? –

答えて

5

いいえ、動的行を作成するときは、 forループ:以内:ループ自体の[注内部各子要素の増分変数

  • setonclickリスナーを使用して、テーブルの行のそれぞれの子要素に対する

    1. 使用setTag()又はsetTag(key, tag): これを行いますループ] onclicklistenersのonclick(View v)

    2. のために、あなたは[にタグを変換するv.getTag()を使ってクリックしたビューを取得することによって、個々のクリックを検出することができます必要なデータ型]

  • +0

    ありがとうございました! –

    +0

    @MarekSebera:大歓迎です! –

    0

    あなた膨張したレイアウトはXMLでこのような何かを見なければならないでしょう:Javaで

    <TableRow android:id="@+id/somerow"> 
        <TextView android:id="@+id/row_item1" android:duplicateParentState="true" .... /> 
        <TextView android:id="@+id/row1_item2" android:duplicateParentState="true" .... /> 
        <TextView android:id="@+id/row1_item3" android:duplicateParentState="true" .... /> 
    </TableRow> 
    

    ので、行を展開した直後に次のようなことを行う必要があります。

    // there is some var tableRow of type TableRow 
    TextView myTextView = new TextView(......); 
    myTextView.setOnClickListener(myOnClickListener); // this is the important part 
    myTableRow.addView(myTextView); 
    
    +0

    の中の項目に@android_hungryがあり、この 'duplicateParentState'属性で' row1_item1/2/3'をどのように扱うことができますか? –

    +0

    私はあなたの質問が間違っていると思います。私はあなたが3つのすべての項目で1つのclickListenerを管理する方法を尋ねていると思った。 clickListenerを別に設定したい場合は、 tableRow.findViewById(R.id.row_item1).setOnClickListener(myOnClickListener1); またはTextViewを動的に作成する場合は、onClickListener – Jordi

    +0

    を直接追加して、各ビューに匿名のonclicklistenerを追加することをお勧めします。 –

    関連する問題