2016-10-26 10 views
0

自分の編集テキストが独自の値を変更し、ある行に値が入力されていれば、ほかのすべての行にも適用されるカスタムリストビューアダプタがあります。カスタムリストビューアのテキストを編集するとスクロールで値が失われる

ここは私のアダプタです using System; using System.Collections.Generic; using System.Linq; using 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; 
    } 






} 
} 
+0

をお試しくださいリサイクラーは、それはあなたのケースを助けるビルドビューホルダーであり表示します。 –

+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 

} 

}

+0

申し訳ありませんが、私は自分のコードで動作させる方法を理解できません。 –

関連する問題