android - 커스텀 - 안드로이드 타이틀바 이미지 넣기




프로그래밍 방식으로 선택한 항목을 프로그래밍 방식으로 설정 (12)

최적의 솔루션은 다음과 같습니다.

    public String[] items= new String[]{"item1","item2","item3"};
    // here you can use array or list 
    ArrayAdapter adapter= new ArrayAdapter(Your_Context, R.layout.support_simple_spinner_dropdown_item, items);
    final Spinner itemsSpinner= (Spinner) findViewById(R.id.itemSpinner);
itemsSpinner.setAdapter(adapter);

항목의 위치를 ​​얻으려면 자동으로 다음 문을 추가하십시오.

itemsSpinner.setSelection(itemsSpinner.getPosition("item2"));

안드로이드 프로젝트에서 일하고 있는데 데이터베이스에서 채워지는 배열 어댑터를 사용하는 회 전자를 사용하고 있습니다.

선택한 항목을 프로그래밍 방식으로 목록에서 설정하는 방법을 찾을 수 없습니다. 예를 들어, 스피너에서 다음 항목이있는 경우 :

  • 카테고리 1
  • 카테고리 2
  • 카테고리 3

화면을 만들 때 프로그래밍 방식으로 범주 2를 선택한 항목으로 만들 수 있습니까? 나는 그것이 C # IE Spinner.SelectedText = "Category 2"와 유사 할지도 모른다고 생각했지만 안드로이드와 비슷한 방법은 없을 것 같습니다.


값을 찾고 선택하려면 :

private void selectValue(Spinner spinner, Object value) {
    for (int i = 0; i < spinner.getCount(); i++) {
        if (spinner.getItemAtPosition(i).equals(value)) {
            spinner.setSelection(i);
            break;
        }
    }
}

내 UtilityClass에서와 마찬가지로 이런 종류의 작업을위한 일반적인 방법을 만들 수 있습니다.

public void SetSpinnerSelection(Spinner spinner,String[] array,String text) {
    for(int i=0;i<array.length;i++) {
        if(array[i].equals(text)) {
            spinner.setSelection(i);
        }
    }
}

내 경우에는이 코드가 다음과 같이 저장되었습니다.

public static void selectSpinnerItemByValue(Spinner spnr, long value) {
    SpinnerAdapter adapter = spnr.getAdapter();
    for (int position = 0; position < adapter.getCount(); position++) {
        if(adapter.getItemId(position) == value) {
            spnr.setSelection(position);
            return;
        }
    }
}

몇 가지 설명 (적어도 단편에 대해서는 - 순수한 활동으로는 시도하지 않음). 누군가가 Android를 더 잘 이해할 수 있기를 바랍니다.

Arun George의 가장 인기있는 답변은 맞지만 어떤 경우에는 작동하지 않습니다.
Marco HC 의 대답은 추가 CPU로드로 인한 최후의 수단 인 Runnable을 사용합니다.

대답은 - setSelection ()을 호출하기 위해 올바른 장소를 선택 해야합니다. 예를 들어 나를 위해 작동 합니다.

@Override
public void onResume() {
    super.onResume();

    yourSpinner.setSelection(pos);
 }

하지만 onCreateView ()에서는 작동하지 않습니다 . 나는 그것이이 주제에 관심을 갖는 이유라고 생각한다.

그 비밀은 안드로이드가 당신이 원하는 어떤 것도 할 수 없다는 것입니다 - oops :( - 구성 요소는 준비가되지 않았을 수도 있습니다.) 또 다른 예로 - onCreateView () 나 onResume ()에서도 ScrollView를 스크롤 할 수 없습니다 답변보기)


연락처 목록이 있으면 다음과 같이 할 수 있습니다.

((Spinner) view.findViewById(R.id.mobile)).setSelection(spinnerContactPersonDesignationAdapter.getPosition(schoolContact.get(i).getCONT_DESIGNATION()));

이 게시물에 respose 사용하기 위해 데이터를 복제해야하므로 SimpleCursorAdapter 있어요. 따라서 다음과 같이 해보는 것이 좋습니다.

for (int i = 0; i < spinnerRegion.getAdapter().getCount(); i++) {
    if (spinnerRegion.getItemIdAtPosition(i) == Integer
        .valueOf(signal.getInt(signal
            .getColumnIndexOrThrow("id_region")))) {
        spinnerRegion.setSelection(i);
        break;
    }
}

나는 그것이 진짜 방법이라고 생각한다.


이 답변들 중 어느 것도 나에게 해결책을주지 않았고, 이것으로 만 작업했습니다 :

mySpinner.post(new Runnable() {
    @Override
    public void run() {
        mySpinner.setSelection(position);
    }
});

이것은 나를 위해 일했다 :

@Override
protected void onStart() {
    super.onStart();
    mySpinner.setSelection(position);
}

@ sberezin의 솔루션과 비슷하지만 onStart ()에서 setSelection ()을 호출합니다.


이것은이 페이지의 다른 주석에 언급되어 있지만 답변으로 끌어내는 것이 유용하다고 생각했습니다.

어댑터를 사용할 때 setAdapter 호출 후에 spinnerObject.setSelection(INDEX_OF_CATEGORY2) 이 발생해야한다는 것을 spinnerObject.setSelection(INDEX_OF_CATEGORY2) . 그렇지 않으면 첫 번째 항목은 항상 초기 선택입니다.

// spinner setup...
spinnerObject.setAdapter(myAdapter);
spinnerObject.setSelection(INDEX_OF_CATEGORY2);

이것은 setAdapter 의 AbsSpinner code 를 검토함으로써 확인됩니다.


  for (int x = 0; x < spRaca.getAdapter().getCount(); x++) {
            if (spRaca.getItemIdAtPosition(x) == reprodutor.getId()) {
                spRaca.setSelection(x);
                break;
            }
        }

public static void selectSpinnerItemByValue(Spinner spnr, long value) {
    SimpleCursorAdapter adapter = (SimpleCursorAdapter) spnr.getAdapter();
    for (int position = 0; position < adapter.getCount(); position++) {
        if(adapter.getItemId(position) == value) {
            spnr.setSelection(position);
            return;
        }
    }
}

위와 같이 사용할 수 있습니다 :

selectSpinnerItemByValue(spinnerObject, desiredValue);

물론 색인과 같이 직접 선택할 수도 있습니다.

spinnerObject.setSelection(index);




spinner