
안녕하세요.
위의 그림대로 리스트뷰에 총 10개의[고정적] 라디오버튼/에디트텍스트를 만들었습니다.
public class menuMsg extends Fragment implements OnClickListener
{
public ArrayList<ListItem> myItems = new ArrayList();
private ListView msglist;//리스트뷰
private MyAdapter myAdapter; //어댑터
RadioButton msg_radio;
EditText msg_edit;
InputMethodManager imm;
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.menu_msg, container, false);
msglist = (ListView)view.findViewById(R.id.msg_listView); //리스트뷰
myAdapter = new MyAdapter();
msglist.setAdapter(myAdapter);
msglist.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
msglist.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String pos = Integer.toString(position);
Toast.makeText(getActivity(), pos, 1000).show();
}
});
return view;
}
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();
// 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_radio = (RadioButton)v.findViewById(R.id.msg_radio);
msg_edit.setTag(position);
msg_edit.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position = (Integer)v.getTag();
Log.d("ppppppppppppp",Integer.toString(position));
//Toast.makeText(getActivity(),Integer.toString(position), 1000).show();
}
});
}
}
}
위의 코드대로 작성을 했는데요,
스크롤을 올리고 내리면서 기존의 라디오버튼이 풀리거나, 에디트텍스트에 써놓은 글자도 사라집니다.
리스트뷰 스크롤을 내리고 올리면서 화면전환하는게 getview에서 이루어진다는데,
기존에 제가 선택한 라디오버튼이나 에디트텍스트의 수정된 글자를 유지시키려면 getview내에서 어떠한 작업을 해야한다는 것인지요?.
또한 해당 리스트뷰를 싱글초이스 모드로 지정해도 라디오버튼이 여러개가 선택됩니다...
싱글초이스로 모드를 지정하면 하나만 선택되는게 아닌가요..?