【问题标题】:How can I use adapter in many activites with many listview如何在具有许多列表视图的许多活动中使用适配器
【发布时间】:2019-03-17 05:06:20
【问题描述】:

嗨,我正在处理许多页面项目,其中包含许多列表视图 当我使用 base adaper 时,它对一个活动的工作,但我在另一个页面上出现错误

这里是我的代码`

命名空间 LastTest { [活动(标签=“LastTest”,MainLauncher = true)] 公共类 MainPage : 活动 { 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

{ [活动(标签=“活动1”)] 公共类 Activity1:活动 { 列出 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>'

我的班级1

命名空间 LastTest { 公共类名称类 { 公共字符串名称;

    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);

    }
}

}

我的班级2

namespace LastTest

{ 类 JobsClass { 公共字符串作业;

    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);

    }
}

}

【问题讨论】:

    标签: listview xamarin xamarin.android adapter baseadapter


    【解决方案1】:

    错误信息是自我解释的:

    您不能使用 JobsClass 创建 HomeScreenAdapter 的实例,因为 JobsClass 不是 NameClass:

    HomeScreenAdapter : BaseAdapter<NameClass>
    

    【讨论】:

      【解决方案2】:

      您已经创建了一个 NameClass 类型的适配器。在您的第二个活动中,您传递的是 JobClass 类型的“tableItems”。

      要么你必须为 JobClass 类型创建一个新的适配器,要么总是传递 NameClass 类型的参数。

      【讨论】:

      • 当我在第二个活动中制作新适配器并通过 jobclass 时,tableitems 中出现错误
      猜你喜欢
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多