안드로이드를 재정의하 onClick(보 v)-가 좋은 솔루션을 사용한 모든 단추에서는 응용 프로그램

StackOverflow https://stackoverflow.com//questions/9640308

문제

당신이 알고있는 우리는 무시할 수 있는 몇 가지 방법의 각 유형을 위해 보기를 우리가 만들어집니다.내가 하고 있지 않는 모든 xml 레이아웃 코드기 때문에 물건을 많이 변화 형태에서 런타임이 있는 것을 동적으로 만들어지므로 프로그래밍 솔루션은 최고의 경로를 나를 위해 여기에.

그래서 얻을하는 요지의 문제는 말할 수는 50 개 버튼 내 안드로이드 응용 프로그램입니다.이 버튼될 수 있습 중 하나에서 활동 하지만 가능성이 보다 더할 수 있 범위에 여러 개의 스크린(활동).

내가 만들어 버튼을 클래스라는 CustomButton 는 재 onClick(보기)방법입니다.어떤 경우의 일부를 버튼을 해야하는 몇 가지 작업(고 말할 수 있습니다 그들은 부품의 linearlayout)그리고 몇몇은의 부분 같은 것은 상대적인 레이아웃과에서는 각각 상대우에 대한 정보를 얻을 상대하는 레이아웃이 버튼에 있는(아마도 당신이 무엇에 대한 정보를 얻기 위해 모든 textviews 에서 동일한 상대적인 레이아웃,etc.).

하나의 솔루션 과정은 얻을 수 있는 ID 를 각각의 버튼을 할 스위치(케이스)이나 뭔가에 따라 ID 를 버튼을 반환되는 당신은 어떤 일을 할 수 있습니다.문제입니다 내가 50 버튼이 있습니다.면 무엇을 했 200?나는 정말 해야 할 200 경우 확인에 나 switch 문의하여 어떤 조치가 필요?

그래서 나는 내려고 어떤 정보를 사용할 수 있는지 알고 있 사용할 수 있는 경우는 재정의 onClick.

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    if(!getClickInfo()){
        ((CustomButton)v).setText("I clicked the button");
        setClickInfo(true);
    }
    else{
        isClicked = false;
        ((CustomButton)v).setText("This is the button that i want to click");


    }

}

그래서 여기 예입니다.가 보기에는 나타내는 버튼을 클릭하고 난 할 수 있습의 텍스트를 변경 버튼을 클릭하고.....하지만 어떤 경우의 일부 상대적인 레이아웃?을 받을 수 있는 다른 정의하는 방법에 대한 자세한 내용은 보기에는 또한 일부의 동일한 상대적인 레이아웃?어떤 경우에는 버튼이 나 변경하고 싶어 배경 색상의 각 시간이면 그것을 변경하는 대신,텍스트가 있습니까?가 있는 경우 X 숫자의 버튼이 나려는 멀리에서 만들 X Id 숫자로 지적한 당신은 잠재적으로는 그들의 수백.

었는지 궁금하다면 누군가가 어떤 아이디어에서 어떤 것이 더 좋은 경로 여기는 것보다 잠재적으로 제한에 대해의 경우에 확인 내 스위치 statement.할 수 있다면 찾아보기 버튼을에서 나온(내 경우에 버튼을의 일부는 외부 전망)다음을 할 수 있는 스위치 제망 대신 나 버튼-내 switch 문 훨씬 적은 복잡하고 유지하기 쉽습니다.감사합니다.

도움이 되었습니까?

해결책

나는 당신의 최종 목표가 무엇인지 확신하지 못합니다.그러나 귀하의 견해 (버튼)에서 부모 (예 : RelativeLayout)를 얻을 수 있습니다.그런 다음보기 그룹이 있으면 자녀를 얻을 수 있으며 필요한 모든 것을 수행 할 수 있습니다.

예 :

@Override
public void onClick(View v) {
    ViewParent parent = v.getParent();
    if (parent instanceof RelativeLayout) {
        // your button is inside a RelativeLayout
        RelativeLayout rl = (RelativeLayout) parent;
        int numChildren = rl.getChildCount();
        // loop through children if you need to (use rl.getChildAt(index) to get each child)
        ...
    }
}
.

실제로 relativelayout 또는 linearlayout이거나 뷰 그룹을 사용하는 것이 무엇이든지 알 필요가 없으면

그것은 도움이되기를 바랍니다.

다른 팁

이해하고 있다면 당신이 올바르게,당신은 단순히 수있는 몇 가지 다른 CustomButton 확장자:말 RelativeLayoutButtonLinearLayoutButton, 과 그들이 구현 를 실험,세 개.Override onClick() 내 확장 클래스고,구현을 처리당 버튼 형식입니다.

액세스할 수 있습니다면 전체 보기 계층 구조 필요한 경우.말고,무언가 이것을 좋아한다:

//assuming a reference to Button button

//get a reference to the parent
View v = button.getParent();
ViewGroup parent;
ArrayList<View> siblings = new ArrayList<>();

if(v instanceof ViewGroup) parent = (ViewGroup) v;
for(int i = 0; i < parent.getChildCount(); i++) {
    siblings.add(parent.getChildAt(i));
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top