6

SlideButtonビューの前のビュー(TextView)とSlideButtonビューの次のビューを取得するにはどうすればよいですか。

IDが「remotelight」のSlideButtonビュー。メソッド「findViewById」を使用してSlideButtonビューを取得できます。したがって、SlideButtonビューを取得した後、「findViewById」メソッドを使用せずに、前のビューと次のビューを取得するにはどうすればよいですか。

本当にありがとう。

以下はレイアウトxmlの一部です。

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />

    <com.ivn.SlideButton
        android:id="@+id/remotelight"
        android:layout_width="100dp"
        android:layout_height="50dp" />


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="" />

</TableRow>
4

3 に答える 3

13

ViewGroupウィジェットのコンテナとして機能しているインスタンスを使用して、これを行うことができます。

getChildAt(int)および indexOfChild(View)を参照してください

だからgetChildAt(indexOfChild(v)+1)あなたに次のビューを取得します。

だから何かのような

 ViewGroup container = (ViewGroup) findViewbyID(R.tableRow1);
 View slideBtn = findViewbyID(R.remoteLight);
 View nextView = container.getChildAt(container.indexOfChild(slideBtn)+1);

オーバーフローのチェックを追加し、次のビューが実際に必要なタイプであることを確認する必要があります。

于 2012-11-02T12:05:27.173 に答える
0

@CjSソリューションを使用する2つの関数を作成しました。

/**
 * @param view
 */
public static View prev(View view) {

    ViewGroup container = (ViewGroup) view.getParent();

    int indexOfChild = container.indexOfChild(view);

    if ((indexOfChild - 1) >= 0) {

        return container.getChildAt(indexOfChild - 1);

    }

    return null;

}

/**
 * @param view
 */
public static View next(View view) {

    ViewGroup container = (ViewGroup) view.getParent();

    int indexOfChild = container.indexOfChild(view);

    if (container.getChildCount() > (indexOfChild + 1)) {

        return container.getChildAt(indexOfChild + 1);

    }

    return null;

}
于 2015-08-09T06:56:37.933 に答える
0

KotlinExtensionで同等のものを作成しました。

fun View.getPreviousView() : View? {
    val container : ViewGroup = this.parent as ViewGroup
    val indexOfChild = container.indexOfChild( this )
    return if (indexOfChild - 1 >= 0) {
        container.getChildAt(indexOfChild - 1)
    } else null
}

fun View.getNextView() : View?{
    val container : ViewGroup = this.parent as ViewGroup
    val indexOfChild = container.indexOfChild( this )
    return if (container.childCount > indexOfChild + 1) {
        container.getChildAt(indexOfChild + 1)
    } else null
}

于 2020-06-28T20:15:37.160 に答える