마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

RecyclerView를 이용해서 EditText를 GetText할려고하는데요

0 추천
제가 버튼을 누를때마다 EditText를 리사이클러뷰에 하나씩 생성되게 해서

확인을 누르면 지금까지 EditText 들에 쓰여진 Text들을 getText를 하고싶은데요 어떤식으로 해야하는건가요 ㅠㅠ
And초보견습생 (120 포인트) 님이 2016년 8월 31일 질문
먼저 RecyclerView의 사용법은 아시리라고 생각합니다. 안그러시다면 먼저 RecylerView의 사용법을 구글을 검색하여 익히시기 바랍니다. 대략적인 코드는 아래처럼 될 것 같습니다.
//Adapter Class

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
   private ArrayList<String> strings = new ArrayList();

   public void addItem(String s) {
         strings.add(s);
   }

   public String getItem(int position) {
          return strings.get(position);
    }
 
    public String getAllText() {
          StringBuilder sb = new StringBuilder():
          for (String s : strings)
               sb.append(s);

          return sb.toString();
     }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {

        View v = LayoutInflater.from(parent.getContext())
                               .inflate(R.layout.my_text_view, parent, false);
       
        ViewHolder vh = new ViewHolder(v);
        
        return vh;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.mEditText.setText(strings[position]);
    }

 //ViewHolder에는 EditText를 포함하도록 합니다.
 //ViewHolder  구현은 직접.
}


Activity의 버튼 클릭이벤트에서 adapter의 instance의 addItem을 호출하시면 됩니다.
myAdapter.addItem("");
myAdapter.notifyDataSetChanged(); //item 갱신

그리고 EditText에 입력이 끝나면 이걸 다시 Adapter에 있는 arraylist를 업데이트 해주신 후 다시 갱신해 주시면 됩니다.

리스트 아이템이 많을 경우는 notifyDataSetChanged는 보이는 전체 아이템을 다시 그리므로 퍼모먼스가 떨어질 수도 있으니 그럴 때는 notifyItemChanged(int position)를 활용하는 걸 검토하시길 바랍니다.
정말 감사합니다  자세하게 설명해주셔서 이해도 쉽고 감사해요!

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...