0

テーブルを持つTableLayoutがあります。このテーブルの各セルにonClicklistenersを設定するにはどうすればよいですか?

この問題の適切な解決策は見つかりませんでした。

4

3 に答える 3

3

このコードを試して、

TableLayout yourRootLayout = findView....
int count = yourRootLayout.getChildCount();
for(int i = 0; i < count; i++){
    View v = yourRootLayout.getChildAt(i);
    if(v instanceof TableRow){
        TableRow row = (TableRow)v;
        int rowCount = row.getChildCount();
        for (int r = 0; r < rowCount; r++){
            View v2 = row.getChildAt(r);
            if (v2 instanceof Button){
                Button b = (Button)v2;
                b.setOnClickListener(this);
            }
        }
    }
于 2013-10-09T09:30:37.750 に答える
0

テーブル行がある場合は、次のようにしてください。

tableRow.setClickable(true);
tableRow.setOnClickListener(onClickListener);

それ以外の場合は、tableLayout セルに customAdapter をsetTag()使用する必要があります。ここからアダプターでのgetTag()使用方法を理解できます。setTag()/getTag()

アダプター内で追跡できます:

@Override
public View getView(final int row, final int column, View converView, ViewGroup parent) {
    if (converView == null) {
        converView = inflater.inflate(getLayoutResource(row, column), parent, false);
        if (row == -1){
            converView.setId(column+2);         // assign new id to the cell view
            setHeaderId(column);        // store that view id in the header array
        }  
    }

    converView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

               // perform what you want

        }
    });     

    return converView;
}
于 2013-10-09T09:31:11.657 に答える
0

TableLayout を組み込んだすべての View オブジェクトに対してクリック リスナーを設定する必要があると思います。

于 2013-10-09T09:29:24.697 に答える