Search code examples
androidandroid-tabhostandroid-tabs

How to remove the duplicate tab when we adding tab in run time


I created tab dynamically in onClick of listview. Whenever I click the same list item the duplicate tab is opening for the same list item.How can I prevent the duplicate tab opening in onClick of list item

Here is my Code

 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++;

 }

Thanks

    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);
}
}

Solution

  • Store the clicked position in an ArrayList after creating the Tab and in the click check if the selected position is already present in the ArrayList or not..if present do not add a tab else add a new tab..

    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);
    }
    }