안드로이드 개발 질문/답변
(글 수 45,052)
public class NewTagActivity extends Activity
{ ArrayAdapter<ListEntry> abAdapter; final ArrayList<ListEntry> abList = new ArrayList<ListEntry>(); Context ctx = this; DebugLog log = new DebugLog(); ListView tagList1,tagList2,tagList3; FrameLayout lin; TextView listtx,listtx2; ImageView ima,ima2; ListEntry item; String[] tagString,tagString2; int pos,pos2; ArrayList<String> list; RelativeLayout tagView1,tagView2; boolean istaglist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newtag); tagList1 = (ListView)findViewById(R.id.tagList1); tagList2 = (ListView)findViewById(R.id.tagList2); tagList3 = (ListView)findViewById(R.id.tagList3); lin = (FrameLayout)findViewById(R.id.listfr2); ima = (ImageView)findViewById(R.id.imageView1); ima2 = (ImageView)findViewById(R.id.imageView2); listtx = (TextView)findViewById(R.id.listte); listtx2 = (TextView)findViewById(R.id.listte2); tagView1 = (RelativeLayout)findViewById(R.id.tagView1); tagView2 = (RelativeLayout)findViewById(R.id.tagView2); addlist(); } public void addlist(){ abAdapter = new ListArrayAdapter(this, R.layout.entry, R.id.eName, abList); tagList1.setAdapter(abAdapter); tagList1.setOnItemClickListener(onItemClickListener1); ListEntry ne1 = new ListEntry(R.string.Cfunctions , R.drawable.ic_launcher); abList.add(ne1); ListEntry ne2 = new ListEntry(R.string.AStart, R.drawable.ic_launcher); abList.add(ne2); ListEntry ne3 = new ListEntry(R.string.URI, R.drawable.ic_launcher); abList.add(ne3); ListEntry ne4 = new ListEntry(R.string.URL, R.drawable.ic_launcher); abList.add(ne4); ListEntry ne5 = new ListEntry(R.string.FOpen, R.drawable.ic_launcher); abList.add(ne5); ListEntry ne6 = new ListEntry(R.string.EBCard, R.drawable.ic_launcher); abList.add(ne6); ListEntry ne7 = new ListEntry(R.string.Message, R.drawable.ic_launcher); abList.add(ne7); ListEntry ne8 = new ListEntry(R.string.Switch, R.drawable.ic_launcher); abList.add(ne8); } public void poslist(){ tagList2.setOnItemClickListener(onItemClickListener2); if(pos == 0){ tagString = getResources().getStringArray(R.array.CfArray); }else if(pos == 1){ tagString = getResources().getStringArray(R.array.ASArray); }else if(pos == 2){ tagString = getResources().getStringArray(R.array.URIArray); }else if(pos == 3){ tagString = getResources().getStringArray(R.array.URLArray); }else if(pos == 4){ tagString = getResources().getStringArray(R.array.FOArray); }else if(pos == 5){ tagString = getResources().getStringArray(R.array.EBArray); }else if(pos == 6){ tagString = getResources().getStringArray(R.array.MeArray); }else if(pos == 7){ tagString = getResources().getStringArray(R.array.SwArray); } tagList2.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,tagString)); } public void pos2list(){ if(pos2 == 0){ tagString2 = getResources().getStringArray(R.array.WCArray); }else if(pos2 == 1){ tagString2 = getResources().getStringArray(R.array.BCArray); }else if(pos2 == 2){ tagString2 = getResources().getStringArray(R.array.AMArray); }else if(pos2 == 3){ tagString2 = getResources().getStringArray(R.array.SVArray); }else if(pos2 == 4){ tagString2 = getResources().getStringArray(R.array.ALArray); }else if(pos2 == 5){ tagString2 = getResources().getStringArray(R.array.SSArray); } tagList3.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,tagString2)); } private OnItemClickListener onItemClickListener2 = new OnItemClickListener(){ public void onItemClick(AdapterView<?> parent, View v, int position, long id) { ima2.setImageResource(item.getPhotoId()); listtx2.setText(tagList2.getItemAtPosition(position)+""); pos2 = position; if(pos == 0){ tagView1.setVisibility(View.GONE); tagView2.setVisibility(View.VISIBLE); pos2list(); } } }; private OnItemClickListener onItemClickListener1 = new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { item = abAdapter.getItem(position); tagList1.setVisibility(View.GONE); tagView1.setVisibility(View.VISIBLE); listtx.setText(item.getPhoneNo()); ima.setImageResource(item.getPhotoId()); pos = position; poslist(); } }; private class ListArrayAdapter extends ArrayAdapter<ListEntry> { private int rsrc; private ArrayList<ListEntry> items; public ListArrayAdapter(Context ctx, int rsrcId, int txtId, ArrayList<ListEntry> data) { super(ctx, rsrcId, txtId, data); this.items = data; this.rsrc = rsrcId; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = li.inflate(rsrc, null); } ListEntry e = items.get(position); if (e != null) { ((TextView)v.findViewById(R.id.eName)).setText(e.getPhoneNo()); ((ImageView)v.findViewById(R.id.eImage)).setImageResource(e.getPhotoId()); } return v; } } @Override public void onBackPressed() { if(tagView1.getVisibility() == View.VISIBLE){ tagView1.setVisibility(View.GONE); tagList1.setVisibility(View.VISIBLE); }else if(tagView2.getVisibility() == View.VISIBLE){ tagView2.setVisibility(View.GONE); tagView1.setVisibility(View.VISIBLE); }else{ finish(); } } }
여기서
if(pos == 0){
tagView1.setVisibility(View.GONE);
tagView2.setVisibility(View.VISIBLE);
pos2list();
}
요로코롬 분리를해서 리스트를 따로보여줍니다.근데 지금은 이렇게 처리가되는대
poslist라는 메서드에서 0번째뿐만아니라
이제 1~7번째까지 많은 리스트 도는 다른 레이아웃들이 생겨날탠대
그대마다 분리를 해줘야합니다.
지금저상황에서도 비져블과 곤덕분에 가능하지만
비져블과 곤을 위로빼고
포지션값으로만 사용하게되면
0번째를 클릭했을땐 메서드가 이미 실행된 이후라서
다른곳을 가더라도 똑같이 저메서드가 적용되어있더라구요.
무조건 0일때만 저게실행 되어야하는데
한번 실행되어버리면 계속 적용이 되어있는상태라서 문제입니다.
해결할수 있는 방법이 있나요 ??
리스트를 초기화시키는 메서드라던지
저런상태에서는 어떤식으로
poslist라는 메서드가 실행되고 나서 그 리스트 뷰를 벗어나면poslist메서드가 실행이 안된걸로 인지할수있을까요 ??