У меня есть следующая реализация, где у меня есть просмотр recycler, в каждом представлении я пытаюсь отобразить данные с использованием OxyPlot.OxyPlot в RecyclerView -MVVMCross Xamarin.Android
Я мог видеть жестко закодированные Plotvalues на каждой карте, но когда я прокручиваю, это своего рода медленный ответ, и приложение замерзает. Интересно, что я делаю неправильно или как улучшить эту проблему производительности?
MainView.xml
<MvxRecyclerView
android:id="@+id/myRecyclerView"
android:layout_marginTop="10dp"
android:scrollbars="vertical"
android:divider="@null"
android:layout_width="match_parent"
android:layout_height="match_parent"
local:MvxItemTemplate="@layout/mycardview" />
mycardview.xml
<RelativeLayout
android:layout_width="200dp"
android:layout_height="match_parent">
<oxyplot.xamarin.android.PlotView
android:id="@+id/Plot"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
MainView.cs
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.MainView, null);
HasOptionsMenu = true;
var cardRecyclerView = view.FindViewById<MvxRecyclerView>(Resource.Id.myRecyclerView);
if (cardRecyclerView != null)
{
cardRecyclerView.HasFixedSize = false;
cardRecyclerView .Adapter = new MainViewRecyclerAdapter((IMvxAndroidBindingContext)BindingContext, Activity);
var layoutManager = new LinearLayoutManager(Activity);
cardRecyclerView.SetLayoutManager(layoutManager);
}
return view;
}
MainViewRecyclerAdapter .cs
public class MainViewRecyclerAdapter : MvxRecyclerAdapter
{
private readonly FragmentActivity _activity;
public MainViewRecyclerAdapter(IMvxAndroidBindingContext bindingContext, FragmentActivity activity)
: base(bindingContext)
{
_activity = activity;
}
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
base.OnBindViewHolder(holder, position);
var view = holder.ItemView;
var cardOptionsButton = view.FindViewById<PlotView>(Resource.Id.Plot);
MainViewModel MyMainViewModel = new MainViewModel();
cardOptionsButton.Model = MyMainViewModel.MyModel;
}
}
MyMainViewModel.cs
public class MyViewModel : MvxViewModel
{
public MyViewModel()
{
GeneratePlotPoints();
}
void GeneratePlotPoints()
{
var mo = new PlotModel();
var s1 = new LineSeries()
{
Color = OxyColors.SkyBlue,
MarkerType = MarkerType.Circle,
MarkerSize = 6,
MarkerStroke = OxyColors.White,
MarkerFill = OxyColors.SkyBlue,
MarkerStrokeThickness = 1.5
};
s1.Points.Add(new DataPoint(0, 10));
s1.Points.Add(new DataPoint(10, 40));
s1.Points.Add(new DataPoint(40, 20));
s1.Points.Add(new DataPoint(60, 30));
mo.Series.Add(s1);
MyModel = mo;
}
PlotModel _myModel;
public PlotModel MyModel
{
get { return _myModel; }
set { SetProperty(ref _myModel, value); }
}
}
Что делает ваш "Саль" Лис t выглядеть в вашей ViewModel? Вы должны просто использовать XML-привязку к https://stackoverflow.com/questions/38316666/binding-oxyplot-via-mvvmcross-in-xamarin-android/38336559#38336559, но основываясь на модели из вашего списка , – Plac3Hold3r
Я обновил свой вопрос с помощью рабочего примера, но теперь у меня проблема с производительностью. Когда я помещаю каждый сюжет на каждую карту и прокручиваю их, это медленно. Интересно, что я делаю неправильно? – hotspring