2014-01-21 79 views
1

我在C#中使用Xamarin Studio。從C#中的Xamarin Studio中的ListView獲取EditText控件#

我已添加EditText控制在列表視圖適配器。這個列表是動態填充的。

現在我想要獲取活動類中的所有EditText的值。我如何實現這一目標?

`public class PRDeptHeadApprovalDetailAdapter:BaseAdapter { List items; 活動上下文;

public PRDeptHeadApprovalDetailAdapter(Activity context, List<PRDeptHeadApprovalDetailAdapterInformation> items) 
     : base() 
    { 
     this.context = context; 
     this.items = items; 
    } 

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


    public override string this[int position] 
    { 
     get { return items[position].ToString(); } 
    } 


    public override int Count 
    { 
     get { return items.Count; } 
    } 

    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     var item = items[position]; 
     View view = convertView; // re-use an existing view, if one is supplied 
     if (view == null) // no view to re-use, create new 
      view = context.LayoutInflater.Inflate(Resource.Layout.PRDeptHeadApprovalDetailAdapter, null); 
     // set view properties to reflect data for the given row 
     view.FindViewById<TextView>(Resource.Id.lbltdPermNo).Text = item.lbltdPermNo; 
     view.FindViewById<TextView>(Resource.Id.lbltdItemName).Text = item.lbltdItemName; 
     view.FindViewById<TextView>(Resource.Id.lbltdJustification).Text = item.lbltdJustification; 
     view.FindViewById<TextView>(Resource.Id.lbltdSrce).Text = item.lbltdSrce; 
     view.FindViewById<TextView>(Resource.Id.lbltdQuantity).Text = item.lbltdQuantity; 
     EditText txtApproveQuantity = view.FindViewById<EditText>(Resource.Id.lbltdApproveQuantity); 
     txtApproveQuantity.Text = item.lbltdApproveQuantity; 
     // return the view, populated with data, for display 
     return view; 
    } 
}` 
+0

你有編輯文本列表視圖行? –

+0

是的,我在listview中使用EditText從用戶獲取數據。 – mshoaiblibra

+0

你可以發佈你的適配器代碼? –

回答

5

在第一次創建的對象的ListView Adapter

titleAdapter = new TitleAdapter(); 

然後你可以通過列表視圖的position得到listview EditText值的每個位置

View view = titleAdapter .getView(position, null, null); 
EditText edittext= (EditText) view.findViewById(R.id.edittext_id_here); 
edittext.getText(); 
+0

您的文章是有幫助的。但我沒有得到解決方案。沒有參數構造函數不能訪問的 。如 'titleAdapter = new TitleAdapter();' 如果我使用 'EditText edittext =(EditText)view.FindViewById(Resource.Id.lbltdApproveQuantity);' 它沒有得到** EditText **。 :( 我使用Xamarin Studio和C#。 – mshoaiblibra

+0

後您適配器類別.... –

+0

我如何粘貼... becoz這裏不允許... :( – mshoaiblibra

0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="100"> 
    <EditText 
     android:id="@+id/txtKeyItem" 
     android:layout_width="0px" 
     android:layout_weight="50" 
     android:layout_height="wrap_content"/> 
    <EditText 
     android:id="@+id/txtValue" 
     android:inputType="number" 
     android:layout_width="0px" 
     android:layout_weight="50" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

//**********************************************************************************// 
ListView lstItems = (ListView)view.FindViewById(Resource.Id.lstInvoiceItems); 
var v = (ViewGroup)lstItems; 
      factureItems.Clear(); 
      KeyValuePair<string, string> items = new KeyValuePair<string, int>(); 
      for(int i = 0; i < v.ChildCount; i++) 
      { 
        var linear = (ViewGroup)(v.GetChildAt(i)); 
        var editTextKey = (EditText)linear.GetChildAt(0); 
        var EditTextValue = (EditText)linear.GetChildAt(1); 
        item.Add(new KeyValuePair<string, string>(editTextKey.Text,EditTextValue.Text)); 
      }