Как я могу использовать адаптер во многих активах со многими списками - PullRequest
0 голосов
/ 12 октября 2018

Привет, я работаю над многими страницами. Проект содержит много списков, когда я использую базовый рекламный ролик, его работа для одного актива, но я получаю сообщение об ошибке с другой страницей

здесь мой код `

namespace LastTest {[Activity (Label = "LastTest", MainLauncher = true)] открытый класс MainPage: Activity {public List tableItems = new List ();

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

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);

        NameClass Recitesn = new NameClass();
        tableItems = Recitesn.Namelist();

        ListView listView = FindViewById<ListView>(Resource.Id.listView1);
        listView.Adapter = new HomeScreenAdapter(this, tableItems);
        listView.ItemClick += OnListItemClick;

    }

    void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
    {
        Context context = Android.App.Application.Context;

        Intent myintent;
        switch (e.Position)
        {
            case 0:
                myintent = new Intent(context, typeof(Activity1));
                StartActivity(myintent);
                break;

        }

    }
}

public class HomeScreenAdapter : BaseAdapter<NameClass>
{
    List<NameClass> items;
    Activity context;

    public HomeScreenAdapter(Activity context, List<NameClass> items)
        : base()
    {
        this.context = context;
        this.items = items;
    }
    public override long GetItemId(int position)
    {
        return position;
    }
    public override NameClass this[int position]
    {
        get { return items[position]; }
    }
    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;
        if (view == null) // no view to re-use, create new
            view = context.LayoutInflater.Inflate(Resource.Layout.CustomView, null);
        view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Name;
        //view.FindViewById<TextView>(Resource.Id.Text2).Text = item.ServerName;
        // view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId);
        return view;
    }
}

} `

второе действие

enter code herenamespace LastTest

{[Activity (Label = "Activity1")] открытый класс Activity1: Activity {List tableItems = new List ();

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

        // Create your application here
        SetContentView(Resource.Layout.Main);
         JobsClass job = new JobsClass();
         tableItems = job.Joblist();

        ListView listView = FindViewById<ListView>(Resource.Id.listView1);
        listView.Adapter = new HomeScreenAdapter(this, tableItems);

    }
}

}

ошибка здесь

            listView.Adapter = new HomeScreenAdapter(this, tableItems);

я копирую свою ошибку

enter code here error CS1503: Argument 2: cannot convert from 'System.Collections.Generic.List<LastTest.JobsClass>' to 'System.Collections.Generic.List<LastTest.NameClass>'

my classe1

пространство имен LastTest {открытый класс NameClass {public String Name;

    public NameClass() { }
    public NameClass(string Name)
    {
            this.Name=Name;
    }

    public List<NameClass> Namelist()
    {
        List<NameClass> NamelistInfo = new List<NameClass>();

        NamelistInfo.Add(new NameClass("david"));
        NamelistInfo.Add(new NameClass("roben"));
        NamelistInfo.Add(new NameClass("jouj"));
        NamelistInfo.Add(new NameClass("caty"));
        NamelistInfo.Add(new NameClass("sale"));

        return (NamelistInfo);

    }
}

}

my classe2

namespace LastTest

{class JobsClass {public String Job;

    public JobsClass() { }
    public JobsClass(string Job)
    {
        this.Job = Job;
    }

    public List<JobsClass> Joblist()
    {
        List<JobsClass> JoblistInfo = new List<JobsClass>();

        JoblistInfo.Add(new JobsClass("A"));
        JoblistInfo.Add(new JobsClass("B"));
        JoblistInfo.Add(new JobsClass("C"));
        JoblistInfo.Add(new JobsClass("D"));
        JoblistInfo.Add(new JobsClass("E"));

        return (JoblistInfo);

    }
}

}

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы создали адаптер типа NameClass.Во втором упражнении вы передаете «tableItems» типа JobClass.

Либо необходимо создать новый адаптер для типа JobClass, либо всегда передавать аргумент типа NameClass.

0 голосов
/ 12 октября 2018

Сообщение об ошибке самоочевидно:

Вы не можете создать экземпляр HomeScreenAdapter с JobsClass, поскольку JobsClass не является NameClass:

HomeScreenAdapter : BaseAdapter<NameClass>
...