2015-01-05 2 views
1

C#을 사용하여 Xamarin의 텍스트 뷰, 이미지 및 단추가있는 목록보기가 있습니다. "친구"listview xamarin 행의 TextView 및 단추 #

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <ListView 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="378.2dp" 
     android:id="@+id/listView1" /> 
</LinearLayout> 

이 목록보기의 각 행에 대해 axml이다라고 : 소위 "ROW1"

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="81.1dp" 
     android:id="@+id/linearLayout1"> 
     <ImageView 
      android:src="@drawable/Icon" 
      android:layout_width="91.7dp" 
      android:layout_height="match_parent" 
      android:id="@+id/imageView5" /> 
     <TextView 
      android:text="Text" 
      android:layout_width="184.9dp" 
      android:layout_height="35.6dp" 
      android:id="@+id/textView1" 
      android:gravity="center" 
      android:textSize="20dp" /> 
     <Button 
      android:text="Chat" 
      android:layout_width="62.3dp" 
      android:layout_height="37.8dp" 
      android:id="@+id/chat1" 
      android:layout_marginTop="32dp" /> 
    </LinearLayout> 
</LinearLayout> 

이리스트 뷰에 대한 axml은 다음과 같습니다 버튼을 클릭하여 나는 새로운 레이아웃을 열어야합니다

이리스트 뷰에 대한 활동 "FriendsActivity"

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 

namespace EJIK_Network 
{ 
    [Activity (Label = "FriendsActivity")]   
    public class FriendsActivity : Activity 
    { 
     ListView listview; 
     protected override void OnCreate (Bundle bundle) 
     { 
      base.OnCreate (bundle); 

      SetContentView (Resource.Layout.Friends); 

      listview = FindViewById<ListView> (Resource.Id.listView1); 

      View rootInAnotherLayout = this.LayoutInflater.Inflate (Resource.Layout.Row1,null); 
      Button chat = rootInAnotherLayout.FindViewById<Button> (Resource.Id.chat1); 
      chat.Click += (sender, e) => {   
       var CA = new Intent(this, typeof(ChatingActivity)); 
       StartActivity (CA); 
      }; 
     } 
    } 
} 

대구 실행하지만 어라고 내가 채팅 버튼을 클릭했을 때 새로운 레이아웃을 열지 못했습니다. "ChatingActivity"에서 정의 했습니까?

답변

2

당신은 Custom Adapter과의 getView 방법 내부를 만들어야합니다 : 그래서 각 목록 항목의 채팅 버튼을 클릭

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

    var view = (convertView ?? 
         this._context.LayoutInflater.Inflate(
          Resource.Layout.Row1, 
          parent, 
          false)) as LinearLayout; 
Button chat = view.FindViewById<Button> (Resource.Id.chat1); 
    chat.Click += (sender, e) => {   
       var CA = new Intent(this, typeof(ChatingActivity)); 
       StartActivity (CA); 
      }; 
} 

의 ChatingActivity이 시작됩니다.

+0

이 코드에는 버그가 있습니다. chat.OnClick 이벤트는 여러 번 등록됩니다 (스크롤하는 동안 GetView가 여러 번 같은보기에서 호출되기 때문에) – JamesF