テーブルを持つTableLayoutがあります。このテーブルの各セルにonClicklistenersを設定するにはどうすればよいですか?
この問題の適切な解決策は見つかりませんでした。
テーブルを持つTableLayoutがあります。このテーブルの各セルにonClicklistenersを設定するにはどうすればよいですか?
この問題の適切な解決策は見つかりませんでした。
このコードを試して、
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);
}
}
}
テーブル行がある場合は、次のようにしてください。
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;
}
TableLayout を組み込んだすべての View オブジェクトに対してクリック リスナーを設定する必要があると思います。