Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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
C# 领域更新Seekbar_C#_Android_Xamarin_Xamarin.android_Realm - Fatal编程技术网

C# 领域更新Seekbar

C# 领域更新Seekbar,c#,android,xamarin,xamarin.android,realm,C#,Android,Xamarin,Xamarin.android,Realm,我正在使用Realm保存我的seekbar更新 我有一个RecyclerView,在RecyclerView中添加X项手册, 在项目中有用户的设置,我希望每个项目的设置分开 public static BottomSheet_Faecher newInstance(String mString) { BottomSheet_Faecher f = new BottomSheet_Faecher(); Bundle args = new Bundle

我正在使用Realm保存我的seekbar更新

我有一个RecyclerView,在RecyclerView中添加X项手册, 在项目中有用户的设置,我希望每个项目的设置分开

    public static BottomSheet_Faecher newInstance(String mString)
    {
        BottomSheet_Faecher f = new BottomSheet_Faecher();
        Bundle args = new Bundle();
        args.PutString("string", mString);
        f.Arguments = args;
        return f;
    }

    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        mString = Arguments.GetString("string");
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View v = inflater.Inflate(Resource.Layout.Settings_Faecher_Wertung, container, false);
        Fach1 = v.FindViewById<SeekBar>(Resource.Id.seek1);
        Fach2 = v.FindViewById<SeekBar>(Resource.Id.seek2);



        var prefs = PreferenceManager.GetDefaultSharedPreferences(this.Activity);
        bool previouslyStarted = prefs.GetBoolean("first", false);



        string name = name = Arguments.GetString("Name");
        Ad = realm.All<SAd>().Where(m => m.mName == name).First();


        if (!previouslyStarted)
          {
            wertungen = new HNWertung { HWertung = Fach1.Progress, NhWertung = Fach2.Progress };
            realm.Write(() => 
            {
                Ad.mWertunglist.Add(wertungen);
            });
            var edit = prefs.Edit();
              edit.PutBoolean("first", true);
              edit.Commit();

          }

        var test = realm.All<HNWertung>().First();
        Fach1.Progress = test.HauptfachWertung;
        Fach2.Progress = test.NebenfachWertung;

        //Fach1.Progress = L;
        //Fach2.Progress = ListWertung.NebenfachWertung;

        Fach1.ProgressChanged += Fach1_ProgressChanged;
        Fach2.ProgressChanged += Fach2_ProgressChanged;


        return v;
    }

    private void Fach2_ProgressChanged(object sender, SeekBar.ProgressChangedEventArgs e)
    {
        Fach1.Progress = 100 - e.Progress;

    }

    private void Fach1_ProgressChanged(object sender, SeekBar.ProgressChangedEventArgs e)
    {
        Fach2.Progress = 100 - e.Progress;
    }

    public override void OnDestroy()
    {

        base.OnDestroy();
    }
publicstaticbottomsheet\u faechernewinstance(stringmstring)
{
底板f=新底板f=新底板f();
Bundle args=新Bundle();
args.PutString(“string”,mString);
f、 参数=args;
返回f;
}
创建时公共覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
mString=Arguments.GetString(“字符串”);
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
视图v=充气机。充气(Resource.Layout.Settings\u Faecher\u Wertung,container,false);
Fach1=v.findviewbyd(Resource.Id.seek1);
Fach2=v.findviewbyd(Resource.Id.seek2);
var prefs=PreferenceManager.getDefaultSharedReferences(this.Activity);
bool previouslyStarted=prefs.GetBoolean(“first”,false);
string name=name=Arguments.GetString(“name”);
Ad=realm.All(),其中(m=>m.mName==name.First();
如果(!先前启动)
{
wertungen=new HNWertung{HWertung=Fach1.Progress,NhWertung=Fach2.Progress};
realm.Write(()=>
{
Ad.mWertunglist.Add(wertungen);
});
var edit=prefs.edit();
edit.PutBoolean(“第一个”,true);
edit.Commit();
}
var test=realm.All().First();
Fach1.进度=test.HauptfachWertung;
Fach2.进度=test.NebenfachWertung;
//Fach1.进度=L;
//Fach2.Progress=ListWertung.NebenfachWertung;
Fach1.ProgressChanged+=Fach1_ProgressChanged;
Fach2.ProgressChanged+=Fach2\u ProgressChanged;
返回v;
}
私有void Fach2\u ProgressChanged(对象发送方,请参阅kbar.ProgressChangedEventArgs e)
{
Fach1.进度=100-e.进度;
}
私有void Fach1_ProgressChanged(对象发送方,请参阅kbar.ProgressChangedEventArgs e)
{
Fach2.进度=100-e.进度;
}
公共覆盖无效OnDestroy()
{
base.ondestory();
}
片段销毁后,我如何更新/保存进度 我怎样才能达到最新的进度

//编辑

public class StufeAdapter : RecyclerView.Adapter
{
    public event EventHandler<int> ItemClick;
    private RecyclerView mRecyclerView;
    private List<StufeAd> mStufenListe;
    Realm realm = Realm.GetInstance();

    public StufeAdapter(List<StufeAd> stufenListe, RecyclerView recyclerView)
    {
        mStufenListe = stufenListe;
        mRecyclerView = recyclerView;
    }

    public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        var viewholder = holder as StufeViewHolder;

        viewholder.StufenPhoto.SetImageResource(mStufenListe[position].mPhoto);
        viewholder.Stufe.Text = mStufenListe[position].mName;
        viewholder.Durchschnitt.Text = mStufenListe[position].mDurchschnitt.ToString();
    }

    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
    {
        View view = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.CardView_Stufe_Row, parent, false);


        StufeViewHolder vh = new StufeViewHolder(view, OnClick);

        return vh;
    }

    public override int ItemCount
    {
        get
        {
            return mStufenListe.Count;
        }
    }
public类StufeAdapter:RecyclerView.Adapter
{
公共事件事件处理程序项单击;
私人回收视图mRecyclerView;
私人名单mStufenListe;
Realm Realm=Realm.GetInstance();
公共StufeAdapter(列出stufenListe、RecyclerView和RecyclerView)
{
mStufenListe=stufenListe;
mRecyclerView=回收视图;
}
公共覆盖无效OnBindViewHolder(RecyclerView.ViewHolder,int位置)
{
var viewholder=作为STUFEIEWHOLDER的持有人;
viewholder.StufenPhoto.SetImageResource(mStufenListe[position].mPhoto);
viewholder.Stufe.Text=mStufenListe[position].mName;
viewholder.durchchnitt.Text=mStufenListe[position].mdurchschnit.ToString();
}
public override RecyclerView.ViewHolder OnCreateViewHolder(视图组父级,int-viewType)
{
视图=LayoutFlater.From(parent.Context).充气(Resource.Layout.CardView\u Stufe\u行,parent,false);
StufeViewHolder vh=新StufeViewHolder(视图,单击);
返回vh;
}
公共覆盖int ItemCount
{
得到
{
返回mStufenListe.Count;
}
}
//领域对象

    public class StufeAd : RealmObject
    {
        [PrimaryKey]
        public string mName { get; set; }
        public int mPhoto { get; set; }
        public int mDurchschnitt { get; set; }
        public IList<HNWertung> mWertunglist { get; }
    }
    public class HNWertung : RealmObject
    {
        public int HauptfachWertung { get; set; }
        public int NebenfachWertung { get; set; }
    }
public类StufeAd:RealmObject
{
[主密钥]
公共字符串mName{get;set;}
公共int-mPhoto{get;set;}
public int mDurchschnitt{get;set;}
公共IList mWertunglist{get;}
}
公共类HNWERTONG:RealmObject
{
公共int HauptfachWertung{get;set;}
公共int NebenfachWertung{get;set;}
}

因此,假设您有一个类似以下内容的
RecyclerView

我们可以创建一个匹配的
RealmObject
来保存您的数据

RealmObject
: 我们可以创建一个
RecyclerView.Adapter
,它从您的
Realm
实例中提取数据,并将用户更改持久化到每个
SeekBar

RecyclerView.Adapter
: 公共类RealmAdapter:RecyclerView.Adapter { 境界;
IQueryable

因此,假设您有一个类似以下内容的
回收视图

我们可以创建一个匹配的
RealmObject
来保存您的数据

RealmObject
: 我们可以创建一个
RecyclerView.Adapter
,它从您的
Realm
实例中提取数据,并将用户更改持久化到每个
SeekBar

RecyclerView.Adapter
: 公共类RealmAdapter:RecyclerView.Adapter { 境界;
IQueryable

是的,每个项目都应该有自己的两个seekbar。我添加了一个与您的recyclerview适配器数据匹配的答案。我想您理解错了。我的意思是,我有一个包含多个项目的recyclerview,在每个项目中我都有一个对话框,您可以在其中更改seekbar。因此seekbar不在回收器中,但我希望seek条形图是从RecyclerView连接到特定项的。这就是为什么我在这里得到该项
string name=name=Arguments.GetString(“name”);Ad=realm.All()。其中(m=>m.mName==name)。First();
相同的过程,每个SeekBar的
进程必须在
回收视图之前保存。ViewHolder
被回收,或者在
片段被销毁之前保存,除非您先将该信息保存到其他地方。发布您的
RealmObject
模型和适配器数据样本。好的,我添加埃德t
public class ARealmObject : RealmObject
{
    [PrimaryKey] // Use Gap-less Primary keys for super fast RecyclerView, otherwise you have to create a "positional" RealmObject mapping
    public int Key { get; set; } // zero-based for RecyclerView Adapter
    public string Caption { get; set; }
    public int SeekBar1 { get; set; }
    public int SeekBar2 { get; set; }
}
public class RealmAdapter : RecyclerView.Adapter
{
    Realm realm;
    IQueryable<ARealmObject> realmobjects;

    public RealmAdapter(RealmConfiguration config)
    {
        realm = Realm.GetInstance(config);
        realmobjects = realm.All<ARealmObject>();
    }

    public class RealmObjectViewHolder : RecyclerView.ViewHolder
    {
        readonly Timer timer;
        readonly Realm realm;
        ARealmObject aRealmObject;
        string lastCaption;

        public RealmObjectViewHolder(View view, Realm realm) : base(view)
        {
            this.realm = realm;
            Caption = view.FindViewById<TextView>(Resource.Id.realmTextView);
            SeekBar1 = view.FindViewById<SeekBar>(Resource.Id.seekBar1);
            SeekBar2 = view.FindViewById<SeekBar>(Resource.Id.seekBar2);
            SeekBar1.StopTrackingTouch += SeekBar_HandleEventHandler;
            SeekBar2.StopTrackingTouch += SeekBar_HandleEventHandler;
        }

        public TextView Caption { get; private set; }
        public SeekBar SeekBar1 { get; private set; }
        public SeekBar SeekBar2 { get; private set; }

        public int Key
        {
            get { return aRealmObject.Key; }
            set
            {
                aRealmObject = realm.Find<ARealmObject>(value);
                aRealmObject = aRealmObject ?? new ARealmObject { Key = value, Caption = $"missing key : {value}", SeekBar1 = 50, SeekBar2 = 50 };
                Caption.Text = aRealmObject.Caption;
                lastCaption = Caption.Text;
                SeekBar1.Progress = aRealmObject.SeekBar1;
                SeekBar2.Progress = aRealmObject.SeekBar2;
            }
        }

        void SeekBar_HandleEventHandler(object sender, SeekBar.StopTrackingTouchEventArgs e)
        {
            UpdateRealmObject();
        }

        void UpdateRealmObject()
        {
            if (aRealmObject.Caption != Caption.Text || aRealmObject.SeekBar1 != SeekBar1.Progress || aRealmObject.SeekBar2 != SeekBar2.Progress)
            {
                lastCaption = Caption.Text;
                realm.Write(() =>
                {
                    aRealmObject.SeekBar1 = SeekBar1.Progress;
                    aRealmObject.SeekBar2 = SeekBar2.Progress;
                    realm.Add(aRealmObject, true); // Using the optional update: parameter set to true
                });
            }
        }
    }

    public override int ItemCount
    {
        get { return realmobjects.Count(); }
    }

    public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        var vh = holder as RealmObjectViewHolder;
        vh.Key = position;
    }

    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
    {
        var itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.ARealmObjectCardView, parent, false);
        var vh = new RealmObjectViewHolder(itemView, realm);
        return vh;
    }
}
[Activity(Label = "RecyclerViewWithRealm", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
    RecyclerView recyclerView;
    RecyclerView.Adapter adapter;
    RecyclerView.LayoutManager layoutManager;
    Realm masterRealmInstance;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        masterRealmInstance = Realm.GetInstance("RecyclerViewExample.realm");
        if (masterRealmInstance.All<ARealmObject>().Count() == 0)
        {
            masterRealmInstance.Write(() => // Create some test data
            {
                for (int i = 0; i < 10000; i++)
                {
                    masterRealmInstance.Add(new ARealmObject { Key = i, Caption = $"StackOverFlow # + {i.ToString()}", SeekBar1 = 50, SeekBar2 = 50 });
                }
            });
        }
        SetContentView(Resource.Layout.ARecyclerLayOut);

        recyclerView = (RecyclerView)FindViewById(Resource.Id.recyclerView);
        recyclerView.HasFixedSize = true;
        layoutManager = new LinearLayoutManager(this);
        recyclerView.SetLayoutManager(layoutManager);
        adapter = new RealmAdapter((RealmConfiguration)masterRealmInstance.Config);
        recyclerView.SetAdapter(adapter);
    }
}