0
public override void OnBindSwipeContentHolder(ListViewHolder holder, int position) 

こんにちは、友人アンドロイドコントロールのTelerik UIでAndroidアプリで作業しています "OnBindSwipeContentHolder"が見つかりませんでした。"無効にする方法が見つかりません"機能エラーAndroidのエラー

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; 
using Com.Telerik.Widget.List; 
using Android.Support.V7.Widget; 
using System.Collections; 

namespace test 
{ 
public class TelerikListView : Activity 
{ 
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 


     SetContentView(Resource.Layout.ListView); 
     // Create your application here 
     RadListView listview = FindViewById<RadListView>(Resource.Id.listView); 
     ListViewAdapter adapter = new ListViewAdapter(GetListOfCities()); 
     listview.SetAdapter(adapter); 


     //CityAdapter adapterlist = new CityAdapter(GetListOfCities()); 
     //listview.SetAdapter(adapterlist); 

     SelectionBehavior selectionBehavior = new SelectionBehavior(); 
     listview.AddBehavior(selectionBehavior); 
     selectionBehavior.SetSelectionMode(SelectionBehavior.SelectionMode.Single); 

     SelectionListener selectionListener = new SelectionListener(this, selectionBehavior); 
     selectionBehavior.AddListener(selectionListener); 

     SwipeExecuteBehavior swipeExecuteBehavior = new SwipeExecuteBehavior(); 
     listview.AddBehavior(swipeExecuteBehavior); 

     SwipeExecuteListener swipeExecuteListener = new SwipeExecuteListener(adapter); 
     swipeExecuteBehavior.AddListener(swipeExecuteListener); 

     swipeExecuteBehavior.SwipeLimitStart = -50; 
     swipeExecuteBehavior.SwipeLimitEnd = 50; 


    } 

    private List<City> GetListOfCities() 
    { 
     List<City> cities = new List<City>(); 
     cities.Add(new City("London", "United Kingdom")); 
     cities.Add(new City("Berlin", "Germany")); 
     cities.Add(new City("Madrid", "Spain")); 
     cities.Add(new City("Rome", "Italy")); 
     cities.Add(new City("Paris", "France")); 
     cities.Add(new City("Hamburg", "Germany")); 
     cities.Add(new City("Barcelona", "Spain")); 
     cities.Add(new City("Munich", "Germany")); 
     cities.Add(new City("Milan", "Italy")); 
     cities.Add(new City("Cologne", "Germany")); 
     return cities; 
    } 



    public override void OnBindSwipeContentHolder(ListViewHolder holder, int position) 
    { 
     RelativeLayout mainLayout = (RelativeLayout)holder.ItemView; 
     LinearLayout leftLayout = (LinearLayout)mainLayout.GetChildAt(0); 
     LinearLayout rightLayout = (LinearLayout)mainLayout.GetChildAt(1); 

     Button leftButton = new Button(mainLayout.Context); 
     leftButton.Text = "edit"; 

     Button rightButton = new Button(mainLayout.Context); 
     rightButton.Text = "delete"; 

     leftLayout.RemoveAllViews(); 
     leftLayout.AddView(leftButton); 

     rightLayout.RemoveAllViews(); 
     rightLayout.AddView(rightButton); 
    } 

} 

public class CityAdapter : ListViewAdapter 
{ 
    public CityAdapter(IList items) 
     : base(items) 
    { 
    } 

    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) 
    { 
     LayoutInflater inflater = LayoutInflater.From(parent.Context); 
     View view = inflater.Inflate(Resource.Layout.city_list_item, parent, false); 
     return new CityViewHolder(view); 
    } 

    public override void OnBindListViewHolder(ListViewHolder holder, int position) 
    { 
     CityViewHolder viewHolder = (CityViewHolder)holder; 
     City city = (City)Items[position]; 
     viewHolder.nameView.Text = city.Name; 
     viewHolder.countryView.Text = city.Country; 
    } 

    public class CityViewHolder : ListViewHolder 
    { 
     public TextView nameView; 
     public TextView countryView; 

     public CityViewHolder(View itemView) 
      : base(itemView) 
     { 

      nameView = (TextView)itemView.FindViewById(Resource.Id.nameView); 
      countryView = (TextView)itemView.FindViewById(Resource.Id.countryView); 
     } 
    } 
} 

public class SelectionCallback : Java.Lang.Object, ActionMode.ICallback 
{ 
    private SelectionBehavior selectionBehavior; 
    public SelectionCallback(SelectionBehavior behavior) 
    { 
     selectionBehavior = behavior; 
    } 

    public bool OnCreateActionMode(ActionMode mode, IMenu menu) 
    { 
     MenuInflater inflater = mode.MenuInflater; 
     inflater.Inflate(Resource.Menu.menu_main, menu); 
     return true; 
    } 

    public bool OnPrepareActionMode(ActionMode mode, IMenu menu) 
    { 
     return false; 
    } 

    public bool OnActionItemClicked(ActionMode mode, IMenuItem item) 
    { 
     return false; 
    } 

    public void OnDestroyActionMode(ActionMode mode) 
    { 
     selectionBehavior.EndSelection(); 
    } 
} 
public class SelectionListener : Java.Lang.Object, 
SelectionBehavior.ISelectionChangedListener 
{ 

    private ActionMode actionMode; 
    private ActionMode.ICallback callback; 
    private Activity activity; 
    private SelectionBehavior selectionBehavior; 

    public SelectionListener(Activity activity, SelectionBehavior selectionBehavior) 
    { 
     this.callback = new SelectionCallback(selectionBehavior); 
     this.activity = activity; 
     this.selectionBehavior = selectionBehavior; 
    } 

    public void OnSelectionStarted() 
    { 
     actionMode = activity.StartActionMode(callback); 
    } 
    public void OnItemIsSelectedChanged(int position, bool newValue) 
    { 
     int selectionCount = selectionBehavior.SelectedItems().Count; 
     actionMode.Title = selectionCount.ToString(); 
    } 
    public void OnSelectionEnded() 
    { 
     actionMode.Finish(); 
    } 
} 

/// <summary> 
/// Swiping behaviour 
/// </summary> 
public class SwipeExecuteListener : Java.Lang.Object, SwipeExecuteBehavior.ISwipeExecuteListener 
{ 

    private ListViewAdapter listViewAdapter; 
    public SwipeExecuteListener(ListViewAdapter adapter) 
    { 
     listViewAdapter = adapter; 
    } 
    public void OnSwipeStarted(int position) 
    { 
    } 
    public void OnSwipeProgressChanged(int position, int offset, View swipeContent) 
    { 
    } 
    public void OnSwipeEnded(int position, int offset) 
    { 
     int absOffset = Math.Abs(offset); 
     if (absOffset > 300) 
     { 
      listViewAdapter.Remove(position); 
     } 
     listViewAdapter.NotifySwipeExecuteFinished(); 
    } 
    public void OnExecuteFinished(int position) 
    { 
    } 
} 
} 
+0

クラス全体のソースコードを共有できますか? – Sreeraj

+0

私はこの参照を使用しています: - http://docs.telerik.com/devtools/android/controls/listview/behaviors/listview-behaviors-swipeexecute –

答えて

1

ActivityクラスはオーバーライドするOnBindSwipeContentHolderメソッドを持っていません。

Telerik、 ListViewAdapter

ListViewDataSourceAdapter行います

onBindSwipeContentHolder

public void onBindSwipeContentHolder(ListViewHolder holder, int position)

Called by RadListView to display the swipe content behind an item at the specified position. This method should update the contents of the com.telerik.widget.list.ListViewHolder#itemView to reflect the swipe content behind the item at the given position.


In order to achieve this we will need to override the ListViewAdapter's onBindSwipeContentHolder(ListViewHolder holder, int position).


私はあなたが間違ったクラスでそのメソッドを持っていると信じて、あなたはあなたのカスタムリストのアダプタでなければなりません。

public class CityAdapter : ListViewAdapter 
{ 

~~~~ 
    public override void OnBindSwipeContentHolder(ListViewHolder holder, int position) 
    { 
     RelativeLayout mainLayout = (RelativeLayout)holder.ItemView; 
     LinearLayout leftLayout = (LinearLayout)mainLayout.GetChildAt(0); 
     LinearLayout rightLayout = (LinearLayout)mainLayout.GetChildAt(1); 

     Button leftButton = new Button(mainLayout.Context); 
     leftButton.Text = "edit"; 

     Button rightButton = new Button(mainLayout.Context); 
     rightButton.Text = "delete"; 

     leftLayout.RemoveAllViews(); 
     leftLayout.AddView(leftButton); 

     rightLayout.RemoveAllViews(); 
     rightLayout.AddView(rightButton); 
    } 

~~~~ 

} 
+0

もう1つの項目選択イベントの問題。どのようなアイテムを選択しているのですが、Java.Lang.NoSuchMethodErrorのような例外が発生しています:スーパーメソッドgetChildAdapterPosition(Landroid/view/View;)クラスLandroid/support/v7/widget/RecyclerView;またはそのスーパークラス( 'android.support.v7.widget.RecyclerView'の宣言は/data/app/test.test-1/base.apkに表示されます) –

+0

あなたはそのエラーとコードで新しい質問を投稿できますか?誰もが簡単に審査して答えることができます – SushiHangover

1

あなたは、AndroidからActivityクラスを継承したクラスTelerikListViewOnBindSwipeContentHolderメソッドをオーバーライドしようとしています。 OnBindSwipeContentHolderクラスは、ListViewAdapter(Telerikコントロール)を継承するクラスによってオーバーライドできます。

したがって、OnBindSwipeContentHolderの定義をTelerikListViewクラスからCityAdapterクラスに移動すると、ビルドエラーが解決されます。

関連する問題