0

リストビューの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 に答える