안드로이드 개발 질문/답변
(글 수 45,052)
package dm.ExamListviewDynamicAdd;
import java.util.ArrayList; import java.util.HashMap;
import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView;
public class ExamListViewDynamicAdd extends Activity { /** Called when the activity is first created. */ ListView listview; IdeaListAdapter listadapter; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); arItem = new ArrayList<ListItem>(); listview = (ListView)findViewById(R.id.mainlistview); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView parent, View view, int position, long id) { ListItem listitem = arItem.get(position); if (listitem.itemInfo.containsKey("more")) { arItem.remove(listitem); for (int i = 10; i < 16; i++) { ListItem item = new ListItem(); item.itemInfo.put("title", "title" + String.format("%d", i)); item.itemInfo.put("date", "date" + String.format("%d", i)); arItem.add(item); } listadapter.notifyDataSetChanged(); listview.setAdapter(listadapter); } } }); listadapter = new IdeaListAdapter(this, R.layout.item1, arItem); for (int i = 0; i < 10; i++) { ListItem item = new ListItem(); item.itemInfo.put("title", "title" + String.format("%d", i)); item.itemInfo.put("date", "date" + String.format("%d", i)); arItem.add(item); } ListItem item = new ListItem(); item.itemInfo.put("more", "더보기"); arItem.add(item); listview.setAdapter(listadapter); } class ListItem { HashMap<String, String> itemInfo = new HashMap<String, String>(); } ArrayList<ListItem> arItem; class IdeaListAdapter extends BaseAdapter { Context context; ArrayList<ListItem> arList; LayoutInflater layoutIf; int layout; public IdeaListAdapter(Context c, int l, ArrayList<ListItem> al) { context = c; layout = l; layoutIf = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); arList = al; } public int getCount() { return arList.size(); }
public String getItem(int position) { return arList.get(position).toString(); } public long getItemId(int position) { return position; }
public boolean getItemMore(int position) { return arList.get(position).itemInfo.containsKey("more") ? true : false; } public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) { if (getItemMore(position)) convertView = layoutIf.inflate(R.layout.item2, null); else { convertView = layoutIf.inflate(layout, parent, false); TextView txt_title = (TextView)convertView.findViewById(R.id.ideatitle); txt_title.setText(arList.get(position).itemInfo.get("title")); TextView txt_wdate = (TextView)convertView.findViewById(R.id.ideawdate); txt_wdate.setText(arList.get(position).itemInfo.get("date")); } } return convertView; }
}; }
리스트에 동적으로 추가 하려는데요
리스트에
title0
title1
title2
title3
title4
title5
title6
title7
title8
title9
더보기
초기에 이렇게 되어 있고 더보기를 클릭했을시
title10
title11
title12
title13
title14
title15
이렇게 더 추가 하려 하는데요.
생각데로 라면 위의소스가 작동을 해야 하는데
더보기 클릭시
1~16까지 나오는게 아니라 중복도 되고 썩기기도 하고 막 그러네요
다른건 둘째치고 리스트 갱신을 잘 못하는것 같은데요
틀린부분이 있다면 조언 부탁드립니다
2011.01.03 11:01:24
해당 기능 해결하셨으면 소스공유해주시면 안될까요??
저도 이거땜시 몇개월을 방법만 찾다 아직까지도 구현 못했는데.. ㅠㅠ
불쌍한 초보 개발자를 위해 조금이나마 도움을 주실 의향이 있으시면..
snazzy79@naver.com 으로 소스 부탁드려요..ㅠㅠ
새해 복 마니 받으세요..
저도 이거땜시 몇개월을 방법만 찾다 아직까지도 구현 못했는데.. ㅠㅠ
불쌍한 초보 개발자를 위해 조금이나마 도움을 주실 의향이 있으시면..
snazzy79@naver.com 으로 소스 부탁드려요..ㅠㅠ
새해 복 마니 받으세요..
이게 널일 경우는 새로 만들어서 내용을 채워야 하는거고....
널이 아닌경우는 재활용은 하되 내용은 다시 채워야 하는거죠...
null일때만 내용채우면 재활용되는 뷰의 내용이 그대로 나오니까 꼬여보이겠죠