0

샘플의 UI에 데이터를 연결하려고합니다. . WPF 배경에서 내 첫 번째 선택은 DataBinding 이었지만, 안드로이드 또는 Xamarin.Android에서 기본적으로 지원되지 않는 것으로 나타났습니다. 물론 일부 확장 프로그램을 사용하여이를 수행 할 수도 있지만 Adapters과 같이 기본적으로 지원되는 것을 사용하고 싶습니다. 예를 들어 ListView 개의 요소가있는 경우 Adapters을 사용하여 데이터로 데이터를 채우는 방법에 대한 자습서를 많이 찾을 수 있지만 데이터에 단일 요소 (예 : 변수 만)를 연결할 수 있는지 여부는 알 수 없습니다.Xamarin.Android : 데이터의 비 목록 요소를 UI에 연결할 수 있습니까?

나는 마음에두고있는 것을 설명하기 위해 : 초보자 용 샘플 프로젝트는 Hello world를 표시하는 것보다 번호를 묻는 것과 같을 것이다. Hello World 숫자 번 forfor 루프를 사용한다. 어댑터를 사용하여이를 수행 할 수 있습니까, 아니면 더 나은 대안을 찾아야합니까? 나는 xp가 Xamarin.Android으로 거의 없기 때문에 처음에는 기본적으로 지원되는 것을 사용하는 방법을 배울 것입니다. 도움을 많이 받으실 수 있습니다!

답변

1

내가 기억하고있는 것을 설명하기 위해 : 초보자 용 샘플 프로젝트는 'for '루프를 사용하여 Hello World 번호를 표시하는 것보다 번호 입력을 요구하는 것과 비슷합니다. 어댑터를 사용하여이를 수행 할 수 있습니까, 아니면 더 나은 대안을 찾아야합니까?

예, 어댑터를 사용하여이를 수행 할 수 있습니다. 하지만 기본 어댑터하지만, 사용자 정의 어댑터 아래 같은 : 당신이 볼 수 있듯이

public class MyListAdapter : Java.Lang.Object,IListAdapter 
{ 
    public int Count { 
     get { 
      //list view will show 10 lines of data 
      return 10; 
     } 
    } 

    public bool HasStableIds { get { return false; } } 

    public bool IsEmpty { get { return false; } } 

    public int ViewTypeCount { get { return 1; } } 

    private Context context; 

    private string uniqueData; 
    //default constructor 
    public MyListAdapter() 
    { } 

    //constructor with current context and the data you want to show in your listview 
    public MyListAdapter(Context c,string data) 
    { 
     context = c; 
     uniqueData = data; 
    } 

    public bool AreAllItemsEnabled() 
    { 
     return true; 
    } 

    public void Dispose() 
    { 
     this.Dispose(); 
    } 

    public Java.Lang.Object GetItem(int position) 
    { 
     throw new NotImplementedException(); 
    } 

    public long GetItemId(int position) 
    { 
     return 0; 
    } 

    public int GetItemViewType(int position) 
    { 
     return 1; 
    } 

    public View GetView(int position, View convertView, ViewGroup parent) 
    { 

     View et=convertView; 
     if (et == null) 
     { 
      et = new TextView(context); 
      (et as TextView).Text = uniqueData; 
     } 
     return et; 

    } 

    public bool IsEnabled(int position) 
    { 
     return true; 
    } 

    public void RegisterDataSetObserver(DataSetObserver observer) 
    { 

    } 

    public void UnregisterDataSetObserver(DataSetObserver observer) 
    { 

    } 
} 

, 당신의 목록보기의 루프 수를 반환 Count.getGetView에서 나는 문자열 데이터를 필요 프로그래밍 TextView을 만들어 생성자에 의해 전달됩니다.

그리고 이렇게 나는 다음과 같이 사용할 수 있습니다

public class MainActivity : Activity 
{ 
    ListView myListView; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView (Resource.Layout.Main); 
     myListView = FindViewById<ListView>(Resource.Id.MyListView); 
     myListView.Adapter=new MyListAdapter(this,"this is my custom data"); 
    } 
} 
+0

감사합니다,이 깔끔한 보인다! 여러 UI 요소가있는 경우 이와 비슷한 것을 사용할 수도 있습니다. 맞습니까? 이 경우 데이터면은 컬렉션 (배열 또는 목록 등)이되며 UI에는 TextViews 또는 Button이 있습니다. – rTECH

+0

여러 개의 UI 요소가있는 경우 재정의 된'GetView' 메소드를 변경해야합니다. [이 문서] (http://www.vogella.com/tutorials/AndroidListView/article.html#adapterown)를 참조하십시오. 그것은 'IListAdapter'를 사용하지 않았습니다. 그러나 아이디어는 같습니다. –

관련 문제