1

こんにちは、このコードを使用したいのですが、onclick メソッドで動作しているため (View v)、アクティビティの別の場所でこのコードを使用するにはどうすればよいですか?

ここにコードがあります

        ListView list= getListView();
        int position = list.getPositionForView(v);
        switch (position) {
        case 1:
                ImageView arrow = (ImageView) getView().findViewById(R.id.arrow);
                arrow.setVisibility(View.VISIBLE);
            break;

        default:
            break;
        }

この場合、View v を取得するにはどうすればよいでしょうか。

前もって感謝します!

4

1 に答える 1

0

同じ問題がありました。この方法が最善の方法かどうかはわかりませんが、私にとってはうまくいきます。すべてのビューが作成されたら、リスナー onLayoutChangeListenerを作成し、項目ビューに実装するロジックを必要な特定の位置に配置します。

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    setOnLayoutChangeListener(getListView());

    super.onViewCreated(view, savedInstanceState);
}


private void setOnLayoutChangeListener(final ListView listview) {
    if (listview != null) {
	listview.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {

	   @Override
	   public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {

	       changeFirstListItemView(listview);

	   }
       });
    }
}

private void changeFirstListItemView(final ListView listview) {
   if (listview != null) {
	try {
	   int listFirstPosition = 1;
	   View view = listview.getChildAt(listFirstPosition);

	   if (view != null) {
		   setHiddenViewVisible(view);
	   }

	} catch (Exception e) {
		// Print some debug info.
		String msg = "An error occurred while trying to set onFocusChange listener.";
		Log.e(TAG, msg, e);
	}
      }
   }

private void setHiddenButtonVisible(View listItem) {
    Button button = null;
	try {
	   buttonId = R.id.listButton;
	   button = (Button) listItem.findViewById(buttonId);
	} catch (Resources.NotFoundException nfe) {
           // Print some debug info.
	}

	if (button != null) {
	   button.setVisibility(View.VISIBLE);
           // Optional, add here button listener, or something else...
        }
}

于 2017-01-29T18:39:00.043 に答える