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

리스트뷰의 editText를 따로 저장할 수있는 방법.

0 추천
public class MyAdapter extends BaseAdapter
	{
		private LayoutInflater lif;
   
		int selectedPosition = 0;
        public MyAdapter() 
        {
        	lif = (LayoutInflater)getActivity().getSystemService
        			(Context.LAYOUT_INFLATER_SERVICE);
            for (int i = 0; i < 10; i++) 
            {
                ListItem listItem = new ListItem();
              //  listItem.caption = "Caption" + i;
                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 myItems.get(position);
		}

		@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;
			//v=getActivity().getLayoutInflater().inflate(R.layout.msg_listview, null);
			
			
			if(v==null)
			{
				v=getActivity().getLayoutInflater().inflate(R.layout.msg_listview, null);
			}
			else
			{
				
			}
			msg_edit = (EditText)v.findViewById(R.id.msg_edit);
			//전체에 적용
			//msg_edit.setText("ggggggggggggggg");
			for(int i=0; i<10; i++)
			{
				if(position == i)
				{
					msg_edit.setText(pref.getString("msg", ""));
				}
			}

			msg_edit.setOnClickListener(new OnClickListener() {
				
				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					Toast.makeText(getActivity(), "editText", 1000).show();
					
				}
			});
			
			msg_edit.addTextChangedListener(new TextWatcher() {
				
				@Override
				public void onTextChanged(CharSequence s, int start, int before, int count) 
				{
					//입력되는 텍스트에 변화가 있을 때
					// TODO Auto-generated method stub
				}
				
				@Override
				public void beforeTextChanged(CharSequence s, int start, int count,
						int after) {
					// TODO Auto-generated method stub
					//입력 전
					
				}
				
				@Override
				public void afterTextChanged(Editable s) 
				{
					// TODO Auto-generated method stub
					//입력 후
					Log.d(":::::::::::::::::","////////");
					pref.edit().putString("msg", s.toString()).commit();
					
				}
			});

		
	}

 

안녕하세요.

리스트뷰에 총 10개의 줄을 만들어, 각각 한줄마다 라디오버튼과 에디트텍스트가 배치되도록 만들었습니다.

에디트텍스트는 0~9번까지 잇는거구요..

최종적으로 구현하고자 하는 것은, 0번부터 9번까지의 에디트텍스트에 값을 입력하거나 수정한 후, 

getSharedpreference로 값을 저장해서 앱을 종료하거나, 다른 페이지로 왔다가 다시 돌아왔을 때 setText로 각각의 입력했던 텍스트값을 띄워주고자 합니다.

어떻게 하면 각각의 에디트텍스트의 getText,setText를 10개의 0~9까지의 값을 구별해서 저장하고 보여줄수 있는지 ..

이전에는 리스트뷰의 형식이 아니라 각각 독립적으로 구현된 에디트텍스트의 값을 저장했는데, 리스트뷰 내의 에디트텍스트 저장하는 방법은 헷갈리네요..ㅠㅠ.. 작은 조언이라도 부탁드립니다..

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

2개의 답변

+1 추천
 
채택된 답변
msg_edit.setTag(position) 을 주시고

리스너안에서 getTag() 하셔서 클릭된 position을 찾아서 처리해주시면 댑니다.
nicehee (73,100 포인트) 님이 2015년 1월 12일 답변
anci님이 2015년 1월 12일 채택됨
+1 추천

getSharedpreference 저장할때에 이름을 배열 이름 주듯 뒤에 0 부터 9까지 숫자를 붙여서

저장한후에 다시 그것을 가져와서  출력하면 쉽게 될거같은데요;;

 

doridori2013@nate.com

익명사용자 님이 2015년 1월 12일 답변
...