안드로이드 개발 질문/답변
(글 수 45,052)
(글에 이미지 올라가는게 안되서 첨부파일에 넣어놨습니다)
먼저 증상을 말씀드리자면 ListView에 나온 아이템을 눌렀을 때 글자색이 변하는 건데, 스크롤링 하다보면 누르지도 않은 녀석들이 함께 색이 변합니다.
ListView에 커스텀어댑터를 만들어서 아래와 같은 형태의 아이템들을 추가시켜주었습니다. 흔한 프레임인 이미지 옆에 텍스트 들어가는 겁니다.
아래와 같이 어댑터를 BaseAdapter를 상속받아 만들었습니다.
이 리스트에 들어갈 아이템들을 수동으로 50개 만들어서 아래 코드처럼 ListView에 넣어주었습니다.
여기서 제가 hoyoon1를 한번 클릭했는데 hoyoon9 아이템도 빨간색으로 같이 변했습니다. 화면 스크롤을 위아래로 움직여보니 클릭하지도 않은 녀석들이 빨간색으로 변해있고, 스크롤 계속 왔다갔다하면 계속 바뀝니다;; (첨부이미지 참조)
물론 ListView의 OnItemClickListener도 해봤지만 마찬가지였습니다.
혹시 어뎁터 문제인가 해서 BaseAdapter를 ArrayAdapter로 변경해봤지만 마찬가지...
제가 원하는 기능은 리스트에서 클릭한 것들만 색깔이 변하는 것입니다. 마치 astro나 estrong의 다중선택 처럼 말입니다.
이 문제를 어떻게 해결해야할지 좀 도와주세요 ㅠㅠ
공지사항을 다 읽었음
먼저 증상을 말씀드리자면 ListView에 나온 아이템을 눌렀을 때 글자색이 변하는 건데, 스크롤링 하다보면 누르지도 않은 녀석들이 함께 색이 변합니다.
ListView에 커스텀어댑터를 만들어서 아래와 같은 형태의 아이템들을 추가시켜주었습니다. 흔한 프레임인 이미지 옆에 텍스트 들어가는 겁니다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@+id/ListView01" android:layout_width="fill_parent" android:layout_height="fill_parent"></ListView> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@+id/ListView01" android:layout_width="fill_parent" android:layout_height="fill_parent"></ListView> </LinearLayout>
아래와 같이 어댑터를 BaseAdapter를 상속받아 만들었습니다.
public class FileListAdapter extends BaseAdapter{
…..
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
if(convertView == null){
convertView = inflater.inflate(layout,parent,false);
}
ImageView img = (ImageView)convertView.findViewById(R.id.ImageView01);
img.setImageResource(list.get(position).icon);
TextView txt = (TextView)convertView.findViewById(R.id.TextView01);
txt.setText(list.get(position).name);
convertView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
((TextView)((LinearLayout)v).getChildAt(1)).setTextColor(Color.RED);
}
});
return convertView;
}
}
이 리스트에 들어갈 아이템들을 수동으로 50개 만들어서 아래 코드처럼 ListView에 넣어주었습니다.
public class FileEditor extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.file_list);
init();
}
public void init(){
ArrayList<FileItem> list = new ArrayList<FileItem>();
for(int i=0 ; i<50 ; i++){
FileItem fi = new FileItem(R.drawable.icon, "hoyoon"+Integer.toString(i));
list.add(fi);
}
FileListAdapter adapter = new FileListAdapter(this,R.layout.file_item, list);
ListView listView = (ListView)findViewById(com.android.hoyoon.R.id.ListView01);
listView.setAdapter(adapter);
}}여기서 제가 hoyoon1를 한번 클릭했는데 hoyoon9 아이템도 빨간색으로 같이 변했습니다. 화면 스크롤을 위아래로 움직여보니 클릭하지도 않은 녀석들이 빨간색으로 변해있고, 스크롤 계속 왔다갔다하면 계속 바뀝니다;; (첨부이미지 참조)
물론 ListView의 OnItemClickListener도 해봤지만 마찬가지였습니다.
혹시 어뎁터 문제인가 해서 BaseAdapter를 ArrayAdapter로 변경해봤지만 마찬가지...
제가 원하는 기능은 리스트에서 클릭한 것들만 색깔이 변하는 것입니다. 마치 astro나 estrong의 다중선택 처럼 말입니다.
이 문제를 어떻게 해결해야할지 좀 도와주세요 ㅠㅠ
공지사항을 다 읽었음



