안드로이드 개발 질문/답변
(글 수 45,052)
import java.util.ArrayList; 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.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import com.qnsolv.tag.list.ListEntry; import com.qnsolv.tag.log.DebugLog;
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일때만 저게실행 되어야하는데
한번 실행되어버리면 계속 적용이 되어있는상태라서 문제입니다.
해결할수 있는 방법이 있나요 ??




질문이 잘 이해가 되지 않지만, 0 위치만 다른 뷰를 사용하시려면..그냥 list 의 headerview를 사용하셔도 됩니다..젤 마지막이면 footerview..