Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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# 沙马林夏洛克_C#_Android_.net_Actionbarsherlock_Xamarin - Fatal编程技术网

C# 沙马林夏洛克

C# 沙马林夏洛克,c#,android,.net,actionbarsherlock,xamarin,C#,Android,.net,Actionbarsherlock,Xamarin,我想在我的申请表中列出一个清单。我用的是夏洛克的片段。 问题是,我没有收到任何错误,我的应用程序只是向我显示一个弹出窗口,并显示以下消息:“抱歉,很遗憾,应用程序名称已停止。” 我得到了我需要的所有数据,应用程序在返回rootView时停止 谢谢你的帮助 代码如下所示: 群碎片 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using

我想在我的申请表中列出一个清单。我用的是夏洛克的片段。 问题是,我没有收到任何错误,我的应用程序只是向我显示一个弹出窗口,并显示以下消息:“抱歉,很遗憾,应用程序名称已停止。” 我得到了我需要的所有数据,应用程序在返回rootView时停止

谢谢你的帮助

代码如下所示: 群碎片

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using Xamarin.ActionbarSherlockBinding.App;

namespace Community_Task_Manager
{
    public class GroupsFragment : SherlockListFragment
    {
        List<TwoLineItem> list_items = new List<TwoLineItem> ();

        public override View OnCreateView(LayoutInflater p_layout, ViewGroup p_view, Bundle p_bundle)
        {
            // Set view
            var rootView = p_layout.Inflate(Resource.Layout.ListFragment, p_view, false);


            // Get Data from Server
            string jsonToSend;
            DataBaseSendObject dbs = new DataBaseSendObject ();
            dbs.CommandId = 4;
            dbs.AddParameter ("@UserId", Localpreference.GetUserId (Application.Context), 2);
            jsonToSend = dbs.JsonSerialization ();
            object objRecieved;
            objRecieved = DatabaseConnection.SendToServer(dbs);

            // Bringing Items into the right Format
            list_items = BM_JsonSerializer.GetListFromJson<TwoLineItem> (objRecieved.ToString ());
            TwoLineItem createNewGroupe = new TwoLineItem ();
            createNewGroupe.Id = 0;
            createNewGroupe.FirstLine = "Create new Group";
            createNewGroupe.SecondLine = "";


            this.ListAdapter = new TwoLineItemAdapter(Activity, list_items);
            //SetListShown (true);
            // Adding data to the View with an Adapter
            //ListView lst = rootView.FindViewById<ListView> (Resource.Id.list);
            //lst.Adapter = new TwoLineItemAdapter(this.Activity, list_itemsss);
            //lst.ItemClick += OnListItemClick;  // to be defined

            return rootView;


        }
}
}
TwoLineItemAdapter:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace Community_Task_Manager
{
    class TwoLineItemAdapter : BaseAdapter<TwoLineItem>
    {
        List<TwoLineItem> items;
        Activity context;
        public TwoLineItemAdapter(Activity context, List<TwoLineItem> items) : base()
        {
            this.context = context;
            this.items = items;
        }

        public override long GetItemId(int position)
        {
            return position;
        }

        public override TwoLineItem 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.TwoLineItem, null);
            view.FindViewById<TextView>(Resource.Id.FirstLine).Text = item.FirstLine;
            view.FindViewById<TextView>(Resource.Id.SecondLine).Text = item.SecondLine;

            return view;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用Android.App;
使用Android.Content;
使用Android.OS;
使用Android.Runtime;
使用Android.Views;
使用Android.Widget;
命名空间社区任务管理器
{
类TwoLineItemAdapter:BaseAdapter
{
清单项目;
活动语境;
公共TwoLineItemAdapter(活动上下文,列表项):base()
{
this.context=上下文;
这个项目=项目;
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
公共覆盖两行项目此[int位置]
{
获取{返回项目[位置];}
}
公共覆盖整数计数
{
获取{return items.Count;}
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
var项目=项目[位置];
视图=转换视图;
如果(view==null)//没有要重用的视图,则创建新的
视图=context.LayoutInflater.Inflate(Resource.Layout.TwoLineItem,null);
view.findviewbyd(Resource.Id.FirstLine).Text=item.FirstLine;
view.findviewbyd(Resource.Id.SecondLine).Text=item.SecondLine;
返回视图;
}
}
}

Boot,在我所有的SherlockListFragment实现中,我都没有发现我必须膨胀列表视图本身。在我的所有实现中,我只是在OnActivityCreated方法中为列表定义适配器。简而言之,我的代码如下所示

    public override void OnActivityCreated(Bundle savedInstanceState)
    {
        base.OnActivityCreated(savedInstanceState);            
        SetHasOptionsMenu(true); 
         if (_adapter == null)
            _adapter = new SkillAdapter(Activity, MyApp, MyCharacter); //MyCustom Adapter class.
        ListAdapter = _adapter;
        ListView.OnItemLongClickListener = _adapter;               

    }

public override void OnActivityCreated(Bundle savedInstanceState){
创建的基本活动(savedInstanceState);
//从服务器获取数据
字符串jsonToSend;
DataBaseSendObject dbs=新的DataBaseSendObject();
dbs.CommandId=4;
dbs.AddParameter(“@UserId”,Localpreference.GetUserId(Application.Context),2);
jsonToSend=dbs.JsonSerialization();
对象对象已指定;
objRecieved=DatabaseConnection.SendToServer(dbs);
//将项目转换为正确的格式
list_items=BM_JsonSerializer.GetListFromJson(objRecieved.ToString());
TwoLineItem createNewGroupe=newTwoLineItem();
createNewGroupe.Id=0;
createNewGroupe.FirstLine=“创建新组”;
createNewGroupe.SecondLine=“”;
ListAdapter=新的TwoLineItemAdapter(活动,列表项);
//SetListShowed(真);
//使用适配器向视图中添加数据
//ListView lst=rootView.findviewbyd(Resource.Id.list);
//lst.Adapter=新的TwoLineItemAdapter(this.Activity,list_itemss);
//lst.ItemClick+=OnListItemClick;//待定义
}

因为这是一个特定的片段,我相信夏洛克在幕后做了其他的事情。您只需定义适配器,然后将ListAdapter设置为已定义的适配器。希望这有帮助。

你能调试/添加断点吗?我可以,它只在Groupsfragment上的返回根视图上停止,我在xamarin studio中没有收到错误,只是在我的手机上弹出消息“抱歉,很遗憾,应用程序名称已停止。你能在adb日志猫中看到什么吗?你是在调试控制台中看到的吗?”很抱歉“留言?是的,谢谢。我找到了一个没有充气的解决方案,但我还没来得及发布。我稍后会尝试发布我的解决方案,并将你的和我的进行比较。”。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace Community_Task_Manager
{
    class TwoLineItem
    {
        public int Id { get; set; }
        public string FirstLine { get; set; }
        public string SecondLine { get; set; }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace Community_Task_Manager
{
    class TwoLineItemAdapter : BaseAdapter<TwoLineItem>
    {
        List<TwoLineItem> items;
        Activity context;
        public TwoLineItemAdapter(Activity context, List<TwoLineItem> items) : base()
        {
            this.context = context;
            this.items = items;
        }

        public override long GetItemId(int position)
        {
            return position;
        }

        public override TwoLineItem 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.TwoLineItem, null);
            view.FindViewById<TextView>(Resource.Id.FirstLine).Text = item.FirstLine;
            view.FindViewById<TextView>(Resource.Id.SecondLine).Text = item.SecondLine;

            return view;
        }
    }
}
    public override void OnActivityCreated(Bundle savedInstanceState)
    {
        base.OnActivityCreated(savedInstanceState);            
        SetHasOptionsMenu(true); 
         if (_adapter == null)
            _adapter = new SkillAdapter(Activity, MyApp, MyCharacter); //MyCustom Adapter class.
        ListAdapter = _adapter;
        ListView.OnItemLongClickListener = _adapter;               

    }
    public override void OnActivityCreated(Bundle savedInstanceState){ 
        base.OnActivityCreated(savedInstanceState);    
        // Get Data from Server
        string jsonToSend;
        DataBaseSendObject dbs = new DataBaseSendObject ();
        dbs.CommandId = 4;
        dbs.AddParameter ("@UserId", Localpreference.GetUserId (Application.Context), 2);
        jsonToSend = dbs.JsonSerialization ();
        object objRecieved;
        objRecieved = DatabaseConnection.SendToServer(dbs);

        // Bringing Items into the right Format
        list_items = BM_JsonSerializer.GetListFromJson<TwoLineItem> (objRecieved.ToString ());
        TwoLineItem createNewGroupe = new TwoLineItem ();
        createNewGroupe.Id = 0;
        createNewGroupe.FirstLine = "Create new Group";
        createNewGroupe.SecondLine = "";

        ListAdapter = new TwoLineItemAdapter(Activity, list_items);
        //SetListShown (true);
        // Adding data to the View with an Adapter
        //ListView lst = rootView.FindViewById<ListView> (Resource.Id.list);
        //lst.Adapter = new TwoLineItemAdapter(this.Activity, list_itemsss);
        //lst.ItemClick += OnListItemClick;  // to be defined




    }