簡體   English   中英

如何在Android的動態表格布局中了解單元格位置

[英]How to get to know cell position in dynamic Table Layout in android

在這里,我使用動態表格布局,但無法獲取單元格位置。 我的問題是android動態表格布局中的“如何到達行和列的位置”。 請幫我。

謝謝。

for (int i = 1; i <= rows; i++) {

        TableRow row = new TableRow(this);
        row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT));

        // inner for loop
        for (int j = 1; j <= cols; j++) {

             TextView tv = new TextView(this);
            tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                     LayoutParams.WRAP_CONTENT));
            tv.setBackgroundResource(R.drawable.cell_shape);
            tv.setPadding(5, 5, 5, 5);
            tv.setId(j);
            tv.setText("R " + i + ", C" + j);

            //mOrangeToolTipView = mToolTipFrameLayout.showToolTipForView(toolTip, tv);
            tv.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(final View v) {

                    Log.d("Row and Column position ", v.getTouchables()+"");

                }
            });

            row.addView(tv);

        }

        table_layout.addView(row);

    }

對您來說可能為時已晚,但是...要從哪里到達行和列的位置? 從內部for循環的內部開始,行位置是i ,列位置是j 在外面嘗試像

((TextView)((TableRow)tableLayout.getChildAt(row)).getChildAt(column)).setText("MyText");

如果要為不同的單元格設置不同的OnClickListener,嘗試從內部類(新View.OnClickListener(){...})訪問ij ,則對您來說有個壞消息,這是不可能的。 但是您可以循環創建每個單元格,因此可以像

...
if (i == 1 && j == 1){
                    tv.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            // do what cell (1,1) have to do
                        }
                    });
                } else {
                    tv.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            // do what other cells have to do
                        }
                    });
                }
...

我希望它能對您或其他人有所幫助;)

陷入了同樣的問題...找到了一個對我有用的解決方案,但是.....它不適用於所有情況

更改此行: tv.setId(j); 至: tv.setId((i*100)+j);

運作方式的邏輯:

獲取行索引: row_index = id/100; 獲取列索引: column_index = id%100; 注意:它的工作原理是給i和j是2位數字。(猜想它是在表格布局中定位textview的索引,最大應在99以內)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM