Click here to Skip to main content
15,885,546 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
My Code is this but not working :
C#
public class ping : SupportFragment
{
View view;
RecyclerView mRecyclerView;
RecyclerView.LayoutManager mLayoutManager;
RecyclerView.Adapter mAdapter;
public List<data> mdata;
int i = 0;


public override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
}

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    view = inflater.Inflate(Resource.Layout.ping, container, false);
    mRecyclerView = view.FindViewById<RecyclerView>(Resource.Id.recyclerview_ping);
    mLayoutManager = new LinearLayoutManager(Activity);
    mRecyclerView.SetLayoutManager(mLayoutManager);
    mdata = new List<data>();
    mAdapter = new RecyclerAdapter(mdata,mRecyclerView);
    mRecyclerView.SetAdapter(mAdapter);
    mRecyclerView.SetItemClickListener((rv, position, view) =>
    {
        //An item has been clicked
        Toast.MakeText(mRecyclerView.Context, mdata[position].sekuenca, ToastLength.Long).Show();

    });
    Task.Run(() => add_data());

    return view;
}

public void add_data()
{
    fillimi:
    Activity.RunOnUiThread(() =>
    {
        i = i + 1;
        string sekuena = i.ToString();
        mdata.Add(new data() { titulli = "From : eakteam.com", sekuenca = "Secuenca : " + sekuena, madhesia = "Send : 64 Bytes", koha = "Time : 45 ms" });
        mAdapter.NotifyItemInserted(mdata.Count());
        mRecyclerView.SmoothScrollToPosition(mdata.Count());
    });

    Thread.Sleep(2000);
    goto fillimi;
}
public class data
{
    public string titulli { get; set; }
    public string sekuenca { get; set; }
    public string madhesia { get; set; }
    public string koha { get; set; }
}
public class RecyclerAdapter : RecyclerView.Adapter
{
    private List<data> mdata;
    private RecyclerView mRecyclerView;
    public RecyclerAdapter(List<data> data, RecyclerView recyclerView)
    {
        mdata = data;
        mRecyclerView = recyclerView;
    }
    public class MyView : RecyclerView.ViewHolder
    {
        public View mMainView { get; set; }
        public TextView mtitulli { get; set; }
        public TextView msekuenca { get; set; }
        public TextView mmadhesia { get; set; }
        public TextView mkoha { get; set; }

        public MyView(View view) : base(view)
        {
            mMainView = view;
        }
    }
    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
    {
        View row = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.ping_lista, parent, false);

        TextView txtTitulli = row.FindViewById<TextView>    (Resource.Id.titulli);
        TextView txt1 = row.FindViewById<TextView>(Resource.Id.txt1);
        TextView txt2 = row.FindViewById<TextView>(Resource.Id.txt2);
        TextView txt3 = row.FindViewById<TextView>(Resource.Id.txt3);

        MyView view = new MyView(row) { mtitulli = txtTitulli, msekuenca = txt1, mmadhesia = txt2, mkoha = txt3 };
        return view;
    }
    public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        MyView mHolder = holder as MyView;
        int indexPosition = (mdata.Count - 1) - position;
        mHolder.mtitulli.Text = mdata[position].titulli;
        mHolder.msekuenca.Text = mdata[position].sekuenca;
        mHolder.mmadhesia.Text = mdata[position].madhesia;
        mHolder.mkoha.Text = mdata[position].koha;
    }
    public override int ItemCount
    {
        get { return mdata.Count; }
    }
    public override long GetItemId(int position)
    {
        return base.GetItemId(position);
    }
}
}

XAML LAYOUT IS :

XML
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <LinearLayout
        android:id="@+id/linear_device"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"
        >
      <Button
          android:text="Add Device"
          android:layout_width="206.0dp"
          android:layout_height="43.3dp"
          android:id="@+id/button_device_vazhdo"
          android:layout_gravity="center"
          android:layout_marginStart="10dp"
          android:layout_marginRight="10dp"
          android:layout_marginBottom="10dp"
          android:background="@android:color/holo_green_dark" />
    </LinearLayout>
  <LinearLayout 
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview_ping"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"
    />
  </LinearLayout>
</LinearLayout>



How to make this work ? i have tried to much things and now im stucked :)
And i have another issue except this :

if i change mAdapter.NotifyItemInserted(mdata.Count()); to mAdapter.NotifyItemInserted(0); to make items apeared on top recyclerview just duplicate item and dont put new item into view.

Thanks in advance

What I have tried:

mAdapter.NotifyItemInserted(mdata.Count() -1);
mRecyclerView.SmoothScrollToPosition(mdata.Count() -1);


It should not be done with "reverseLayout"
Posted
Comments
Graeme_Grant 5-Mar-17 12:25pm    
Have you asked the question in the Android — Xamarin Forums[^]?
Emin Kokalari 5-Mar-17 15:18pm    
Yes , but no solution yet ... i thought maybe get any solution here.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900