2013-10-31 2 views
0

listview onClick에 동적으로 탭을 만들었습니다. 내가 중복 탭은 같은 목록을 열고 동일한 목록 항목을 클릭 할 때마다 item.How 내가 목록 항목 여기런타임에 탭을 추가 할 때 중복 탭을 제거하는 방법

의 온 클릭에 중복 탭 개방을 방지 할 수 있습니다 나의 코드

protected void onListItemClick(ListView l, View v, final int position, long id) 
{ 

    super.onListItemClick(l, v, position, id); 
    TabHost tabHost = Tabviewactivity.self.getTabHost(); 
    FriendInfo friend = friendAdapter.getItem(position); 
    Intent i = new Intent(); 
    i.setClass(this, Messaging.class); 
    i.putExtra(FriendInfo.USERNAME, friend.userName); 

    String friend_name = friend.userName; 
    tabHost.addTab(tabHost.newTabSpec(friend_name + Integer.toString(z)). 
          setIndicator(friend_name).setContent(i)); 
    tabHost.setCurrentTab(z); 
    z++; 

} 

감사하다

TabHost tabHost = AllFriendList.self.getTabHost(); 
    int position = tabHost.getCurrentTab(); 

Log.d("Position",Integer.toString(position)); 
Log.d("Z val in delete()",Integer.toString(z)); 
if(position >0) 
{ 
tabHost.getCurrentTabView().setVisibility(View.GONE); 
tabHost.setCurrentTab(position+1); 
z-=1; 
if(z<0) 
z=0; 
} 
else if(position == 0) 
{ 
tabHost.getCurrentTabView().setVisibility(View.GONE); 
tabHost.setCurrentTab(position+1); 
z=0; 
} 
else if(position == z) 
{ 
tabHost.getCurrentTabView().setVisibility(View.GONE); 
tabHost.setCurrentTab(z-1); 
Log.d("Z value in final","lol"); 
Log.d("Pos",Integer.toString(position)); 
Log.d("z pos",Integer.toString(z)); 
} 
TabActivity parent = (TabActivity) getParent(); 
TabHost tabhost = parent.getTabHost(); 
tabhost.setCurrentTab(z+1); 
for(int i=0;i<tabList1.size();i++) 
{ 
if(tabList1.contains(frnd_position1)) 
{ 
tabList1.remove(i); 
} 
} 

답변

0

스토어 선택한 위치가 다른 탭 새 탭을 추가하지 않는 ArrayList에 또는 현재 not..if 이미 존재하는 경우 탭을 만든 후 및 클릭 확인에 ArrayList에서 클릭 된 위치 ..

ArrayList<Integer> tabList = new ArrayList<Integer>(); 
protected void onListItemClick(ListView l, View v, final int position, long id) { 

super.onListItemClick(l, v, position, id); 

if(!tabList.contains(position)) { 
TabHost tabHost = Tabviewactivity.self.getTabHost(); 

FriendInfo friend = friendAdapter.getItem(position); 
Intent i = new Intent(); 
i.setClass(this, Messaging.class); 
i.putExtra(FriendInfo.USERNAME, friend.userName); 

String friend_name = friend.userName; 
tabHost.addTab(tabHost.newTabSpec(friend_name + Integer.toString(z)).setIndicator(friend_name).setContent(i)); 
tabHost.setCurrentTab(z); 
z++; 

tabList.add(position); 
} 
} 
+0

감사합니다. @ bakriOnFire. 그것은 잘 작동 – user2873624

+0

또 하나의 도움 @bakriOnFire은 목록 항목을 두 번째 클릭하면 이미 열려있는 탭을 설정할 수 있습니다 – user2873624

+0

u는 설정 한 태그를 사용하여 else 조건에서 tabHost.setCurrentTabByTag (태그)를 사용할 수 있습니다. newTabSpec을 만드는 동안 .. – bakriOnFire