0

我在 listview 的 onClick 中动态创建了选项卡。每当我单击同一个列表项时,都会为同一个列表项打开重复的选项卡。如何防止在列表项的 onClick 中打开重复的选项卡

这是我的代码

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

1 回答 1

0

在创建选项卡后将单击的位置存储在一个ArrayList选项卡中,并在单击中检查所选位置是否已存在于 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);
}
}
于 2013-10-31T08:49:17.620 回答