自定义Listview适配器中的编辑文本在滚动上丢失值

时间:2016-10-26 11:18:04

标签: c# android xamarin xamarin.android

我有一个自定义列表视图适配器,我的编辑文本在其自身上更改其值,如果一行填充了某个值,它也会在所有其他行上获得。

这是我的适配器     使用系统;     使用System.Collections.Generic;     使用System.Linq;     使用System.Text;     使用System.Data.SqlClient;

using Android.App;
 using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;

namespace Kites
{
public class Marks 
{
    // add any if you need more

    public string StudentName { get; set; }
    public string MarksScored { get; set; }
}
public class MarksListViewAdapter : BaseAdapter<Marks>
{
    private List<Marks> mstuduentmarks;

    private Context mcontext;

    public MarksListViewAdapter (Context context, List<Marks> stud)
    {
        mstuduentmarks = stud;
        mcontext = context;
    }

    public override int Count 
    {
        get 
        {
            return mstuduentmarks.Count;
            //              return mattendence.Count;

        }
    }
    public override long GetItemId (int position)
    {
        return position;
    }
    public override Marks this[int position] 
    {
        get 
        {
            return mstuduentmarks [position];
            //              return mattendence [position];

        }
    }



    public override View GetView (int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        if (view == null) // otherwise create a new one
            view = LayoutInflater.From(mcontext).Inflate(Resource.Layout.listview_Marks, null, false);

        // set view properties to reflect data for the given row
        TextView txtStudent = view.FindViewById<TextView>(Resource.Id.textStudentNameTeacherMarks);
        txtStudent.Text = mstuduentmarks[position].StudentName;
        EditText txtMarks = view.FindViewById<EditText> (Resource.Id.editTextTeacherMarks);
        txtMarks.Text = mstuduentmarks[position].MarksScored;

        txtMarks.TextChanged += (sender, e) => 
        {
            mstuduentmarks[position].MarksScored = txtMarks.Text;
        };


        return view;
    }






}
}

1 个答案:

答案 0 :(得分:0)

以下代码可以轻松地使用任何元素继续您的点击事件:)

public class HomeRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {


private List<String> mItemList;

RecyclerView mRecyclerView;

Context context;
HomeItemViewHolder mHomeItemholder;

public HomeRecyclerAdapter(List<String> itemList) {
    mItemList = itemList;
}


public class HomeItemViewHolder extends RecyclerView.ViewHolder {

    ImageView mImage;


    public HomeItemViewHolder(View parent) {
        super(parent);

        mImage = (ImageView) parent.findViewById(R.id.Image); 

    }

}

public HomeRecyclerAdapter(List<String> itemList, Context context, RecyclerView mRecyclerView) {
    this.mItemList = itemList;
    this.context = context;
    this.mRecyclerView = mRecyclerView;


}


@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    Context context = parent.getContext();

    final View view = LayoutInflater.from(context).inflate(R.layout.item_home, parent, false);


    return new HomeItemViewHolder(view);

}


@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {

    mHomeItemholder = (HomeItemholder) viewHolder;         


    mHomeItemholder.mImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //Handle your code
        }
    });

}       



public int getBasicItemCount() {
    return mItemList == null ? 0 : mItemList.size();
}


@Override
public int getItemCount() {
    return getBasicItemCount(); // header

} 

}