Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 编辑列表中的文本。EditText.TextChanged在滚动条上给出了错误的值_Android_Listview_Xamarin.android - Fatal编程技术网

Android 编辑列表中的文本。EditText.TextChanged在滚动条上给出了错误的值

Android 编辑列表中的文本。EditText.TextChanged在滚动条上给出了错误的值,android,listview,xamarin.android,Android,Listview,Xamarin.android,我在每个列表上都有以下行布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match

我在每个列表上都有以下行布局:

<?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="wrap_content">
    <TextView
        android:id="@+id/RawNumberTextView"
        android:layout_marginLeft="@dimen/ButtonMargin"
        android:layout_marginRight="@dimen/ButtonMargin"
        android:text="@string/ColumnsStatistics_RawCount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <EditText
        android:id="@+id/RawBetEditText"
        android:clickable="true"
        android:focusable="true" 
        android:focusableInTouchMode="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="number"/>
            <com.google.android.material.button.MaterialButton
            style="@style/AppTheme.ButtonStyle"
        android:id="@+id/MinusOneButton"
        android:layout_marginLeft="@dimen/ButtonMargin"
        android:layout_marginRight="@dimen/ButtonMargin"
            android:elevation="@dimen/ButtonElevation"
            android:text="-1"        
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
              />
            <com.google.android.material.button.MaterialButton
            style="@style/AppTheme.ButtonStyle"
        android:id="@+id/PlusOneButton"
        android:layout_marginRight="@dimen/ButtonMargin"
            android:elevation="@dimen/ButtonElevation"
            android:text="+1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             />
</LinearLayout>

您可以在加号或减号时再次设置编辑文本的
Data[pos]

将下面的代码添加到加号或减号按钮事件中

 Data[pos] = betPerDrawEditText.Text;
整个代码:

            MinusOneButton.Click += (sender, e) =>
            {
                pos = (int)MinusOneButton.Tag;
                Data[pos] = betPerDrawEditText.Text;
                int number = 0;

                bool success = int.TryParse(Data[pos], out number);
                if (success)
                {
                    if (number > 0)
                        number--;
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                }
                else
                {
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                }
            };

            PlusOneButton.Click += (sender, e) =>
            {
                pos = (int)PlusOneButton.Tag;
                int number = 1;
                Data[pos] = betPerDrawEditText.Text;
                bool success = int.TryParse(Data[pos], out number);
                if (success)
                {
                    number++;
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                }
                else
                {
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                }
            };
截图:


您好,谢谢您的回答,我也用一个代码编辑了这个问题,这个代码也可以使用,但是有东西告诉我,它被多次无缘无故地访问,而您的想法更好,您认为呢?在我给出答复之前,我尝试了
TextChanged
。它访问了很多次。我提供的方法运行良好,没有错误。因此,我提供了在加号或减号之前设置
数据[pos]
的方法。虽然您的代码在按钮上运行良好,但如果我从键盘上更改整数并向下滚动,则不会存储输入,因此我还添加了以下代码:betPerDrawEditText.TextChanged+=(object sender,Android.Text.TextChangedEventArgs e)=>{int number=0;if((int)betperpaudedittext.Tag==position){bool success=int.TryParse(e.Text.ToString(),out number);if(success)Data[position]=number.ToString();};如果此回复对您有帮助,您可以接受作为答案。如果您在更改键盘上的整数并向下滚动时遇到问题,请发布带有代码和错误的新问题。在您的代码中,您没有关于EditText的任何信息。TextChanged,当输入来自键盘时,您如何保存更改的内容?您的代码仅显示减号+按钮的内容ns有
private void AddMoney()
        {
            var layout = LayoutInflater.Inflate(Resource.Layout.ListViewMoneyPerDraw, null);
            var listviewTitle = layout.FindViewById<TextView>(Resource.Id.ListViewTitleTextView);
            var list = layout.FindViewById<ListView>(Resource.Id.BetPerDrawListView);
            var moneyPerDrawDialogBuilder = new AlertDialog.Builder(Activity);

            var listOptions = new List<string>();
            listOptions.Add("1");
            listOptions.Add("2");
            listOptions.Add("3");
            listOptions.Add("4");
            listOptions.Add("1");
            listOptions.Add("2");
            listOptions.Add("3");
            listOptions.Add("4");
            listOptions.Add("1");
            listOptions.Add("2");
            listOptions.Add("3");
            listOptions.Add("4");
            listOptions.Add("1");
            listOptions.Add("2");
            listOptions.Add("3");
            listOptions.Add("4");
            list.Adapter = new MoneyPerDrawAdapter(Activity, listOptions);
            list.ItemsCanFocus = true;

            moneyPerDrawDialogBuilder.SetTitle(GetString(Resource.String.NumbersSearch_NumberSelectionAlertDialogTitle));
            moneyPerDrawDialogBuilder.SetIcon(Resource.Mipmap.ic_launcher);
            moneyPerDrawDialogBuilder.SetView(layout);
            moneyPerDrawDialogBuilder.SetCancelable(false);
            moneyPerDrawDialogBuilder.SetPositiveButton(GetString(Android.Resource.String.Ok), (s, ex) => {  }); 
            moneyPerDrawDialogBuilder.SetNegativeButton(GetString(Android.Resource.String.Cancel), (s, ex) => { }); 
            var moneyPerDrawDAlertDialog = moneyPerDrawDialogBuilder.Show();
            moneyPerDrawDAlertDialog.Window.ClearFlags(WindowManagerFlags.NotFocusable | WindowManagerFlags.AltFocusableIm);
        }
if (view != null)
{
betPerDrawEditText.TextChanged += (object sender, Android.Text.TextChangedEventArgs e) =>
            {
                int number = 0;
                if ((int)betPerDrawEditText.Tag == position)
                {
                    bool success = int.TryParse(e.Text.ToString(), out number);
                    if (success)
                        Data[position] = number.ToString();
                }
            };
}
 Data[pos] = betPerDrawEditText.Text;
            MinusOneButton.Click += (sender, e) =>
            {
                pos = (int)MinusOneButton.Tag;
                Data[pos] = betPerDrawEditText.Text;
                int number = 0;

                bool success = int.TryParse(Data[pos], out number);
                if (success)
                {
                    if (number > 0)
                        number--;
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                }
                else
                {
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                }
            };

            PlusOneButton.Click += (sender, e) =>
            {
                pos = (int)PlusOneButton.Tag;
                int number = 1;
                Data[pos] = betPerDrawEditText.Text;
                bool success = int.TryParse(Data[pos], out number);
                if (success)
                {
                    number++;
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                }
                else
                {
                    betPerDrawEditText.Text = number.ToString(CultureInfo.InvariantCulture);
                    Data[pos] = number.ToString(CultureInfo.InvariantCulture);
                }
            };