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

listview의 editText 사용 법..

0 추천

안녕하세요.

리스트뷰에 10개의 editText를 나열했습니다.

listitem.xml 에서 editText와 radiobutton을 배치했습니다. [한 줄마다 출력]

list = (ListView)view.findViewById(R.id.listitem); //리스트뷰
		list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
		myAdapter = new MyAdapter();
		list.setAdapter(myAdapter);
public class MyAdapter extends BaseAdapter
	{
		private LayoutInflater lif;
   
        
        public MyAdapter() 
        {
        	lif = (LayoutInflater)getActivity().getSystemService
        			(Context.LAYOUT_INFLATER_SERVICE);

            for (int i = 0; i < 10; i++) 
            {
                ListItem listItem = new ListItem();
                myItems.add(listItem);
            }
        }

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return myItems.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) 
		{
			Log.d("..........getview","getview");
			View v = convertView;
			
			if(v ==null)
			{
				v=getActivity().getLayoutInflater().inflate(R.layout.listitem, null);
				edit = (EditText)getActivity().findViewById(R.id.msg_edit);
				radio = (RadioButton)getActivity().findViewById(R.id.msg_radio);
			}
			else
			{
				
			}
			return v;
		}
		
	}
	
	
    }

 

이런식으로  라디오버튼/에디트텍스트를 총 10줄 출력했습니다.

리스트뷰에서 해당 열을 선택하면[롱클릭/클릭] 몇 번째 position인것을 구하는지는 알겠는데,

라디오버튼이나 editText를 선택시 몇 번째 줄인지 ..

혹은 에디트텍스트의 text를 sharedpreference로 저장하려고 하는데 해당 editText를 구별해서 저장할 수있는지 방법을 모르겠습니다. 단순히 레이아웃에 지정한 에디트텍스트 한개라면 해당 에디트텍스트 아이디의 getText 등으로 string값을 받아서 저장하면 되는데, 리스트뷰에 출력된 여러개의 에디트텍스트는 어떻게 구별하는지 궁금합니다.

 

 

 

anci (19,950 포인트) 님이 2014년 12월 22일 질문

1개의 답변

+1 추천
 
채택된 답변

edit = (EditText)getActivity().findViewById(R.id.msg_edit);

radio = (RadioButton)getActivity().findViewById(R.id.msg_radio);
 
위 두줄을 if문 밖으로 꺼내셔야합니다.
그래야 position별 컨트롤이 가능합니다.
그리고 리스너를 달아주셔요.. 필요하면 setTag로 position을 리스너에게 전달해주시면 되공
nicehee (73,100 포인트) 님이 2014년 12월 22일 답변
anci님이 2014년 12월 22일 채택됨
댓글 감사합니다. 일단 말씀해주신대로 v==null if 문 밖으로 두 줄을 빼내었습니다.
컨트롤할 리스너는 어느 부분에 작성해야 하나요..?
radio밑에 바로 했는데 nullpoint익셉션이 발생하네요..
edit = (EditText)getActivity().findViewById(R.id.msg_edit);
radio = (RadioButton)getActivity().findViewById(R.id.msg_radio);

이것이 아니라
edit = (EditText) v.findViewById(R.id.msg_edit);
radio = (RadioButton) v.findViewById(R.id.msg_radio);
이렇게 지요...
아하..감사합니다..(__)
fragment와 함께 쓰다보니 혼동이 왔네요..알려주셔서 감사합니다!
...