안드로이드 개발 질문/답변
(글 수 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일때만 내용채우면 재활용되는 뷰의 내용이 그대로 나오니까 꼬여보이겠죠