查找点击的文本视图的索引

问题描述 投票:0回答:1

我正在制作一个包含多个文本视图的网格布局。同样的xml代码是。

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:alignmentMode="alignMargins"
    android:background="@android:color/white"
    android:columnCount="1"
    android:columnOrderPreserved="false"
    android:rowCount="1">

    <LinearLayout
        android:id="@+id/row1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:background="@android:color/white"
        android:weightSum="5">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/background_black"
            android:clickable="true"
            android:gravity="center"
            android:onClick="onClick"
            android:textColor="@android:color/black"
            android:textSize="32sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/background_black"
            android:clickable="true"
            android:gravity="center"
            android:onClick="onClick"
            android:textColor="@android:color/black"
            android:textSize="32sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/background_black"
            android:clickable="true"
            android:gravity="center"
            android:onClick="onClick"
            android:textColor="@android:color/black"
            android:textSize="32sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/background_black"
            android:clickable="true"
            android:gravity="center"
            android:onClick="onClick"
            android:textColor="@android:color/black"
            android:textSize="32sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/background_black"
            android:clickable="true"
            android:gravity="center"
            android:onClick="onClick"
            android:textColor="@android:color/black"
            android:textSize="32sp" />

    </LinearLayout>


</GridLayout>

如你所见,我为每个文本视图定义了onClick方法。点击的处理方式是这样的。

public void onClick(View v) {
    if (v instanceof TextView && isInitiatePhase) {
        ((TextView) v).setText(String.valueOf(++count));
        if (count == 5) {
            isInitiatePhase = false;
        }
    } else if (v instanceof TextView) {
        // now we have to start cutting/setting the color to red
        ((TextView) v).setTextColor(Color.RED);

    }
}

启动阶段处理得很好,现在在启动阶段结束后,当我点击了 "点击 TextViews 我想知道哪一个是被点击的。有没有办法找到类似TextView的索引,在 onClick() 方法?

是否 LinearLayout 提供该功能,如果 TextView 不会吗?

另外,我的方法是否正确?还是有其他的Layout我应该使用同样的方法?

android textview onclicklistener
1个回答
1
投票

而不是添加 onClick,我们可以添加 onClickListener 在网格布局的线性布局的每个子视图中。类似这样。

//Add gridlayout id in xml
GridLayout girdLayout = (GridLayout) findViewById(R.id.gridlayout_id);
final LinearLayout ll = gridLayout.findViewById(R.id.row1);
int childCount = ll.getChildCount();
for (final int i= 0; i < childCount; i++){
    TextView textView = (TextView) ll.getChildAt(i);
    textView.setOnClickListener(new View.OnClickListener(){
        public void onClick(View view){
            // Do your job, i current index of child
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.