2017-10-13 157 views
0

我有一个自定义listview其中包含buttontextviewtextview知名度消失了。当button文本是“电子邮件”,并且如果我点击buttontextview应该显示在button的下面。但最后的textview总是变得可见。下面textview在列表视图中不可见时在某一行上单击按钮

@Override 
public View getView(final int i, View view, ViewGroup viewGroup) { 

    wantedUsers du = wusers.get(i); 

    final String mcontact = du.mcontact; 

    if(view==null) { 
     viewholder = new viewholder(); 
     view = LayoutInflater.from(ws).inflate(R.layout.wantedmoviecustom, null); 
     viewholder.mcontwcustom = (Button)view.findViewById(R.id.mcontwcustom); 

     viewholder.mdisplayemail = (TextView) view.findViewById(R.id.mdisplayemail); 
     view.setTag(viewholder); 
    } else { 
     viewholder = (viewholder) view.getTag(); 
    } 

    viewholder.mdisplayemail.setVisibility(View.GONE); 

    if(mcontact.contains("@")) { 
     viewholder.mcontwcustom.setText("Show Email"); 
     viewholder.mdisplayemail.setText(mcontact); 
    } else { 
     viewholder.mcontwcustom.setText("Call"); 
    } 

    viewholder.mcontwcustom.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if(mcontact.contains("@")) { 
       int p=(Integer)view.getTag(); 

       viewholder.mdisplayemail.setVisibility(View.VISIBLE); 
       // viewholder.mdisplayemail.setText(mcontact); 

      } 
      else 
      { 
       Uri call = Uri.parse("tel:" + mcontact); 
       Intent surf = new Intent(Intent.ACTION_DIAL, call); 
       ws.startActivity(surf); 
      } 
     } 
    }); 
    viewholder.mcontwcustom.setTag(i); 
    return view; 
} 

是我getview从定制adapter。那么当button点击特定的行时,如何才能制作textviewvisbile

+0

你需要改变'viewholder.mdisplayemail.setVisibility();'to viewholder.mdisplayemail.setVisibility(View.VISIBLE);' – UltimateDevil

+0

让我看看你的布局? –

+0

@ user2269164检查我的答案可能会解决您的问题 – UltimateDevil

回答

1

首先,你需要创建一个全球变量

int positionOfButtonClick = -1; 

,那么你需要更新button点击你的位置,并需要调用notifyDataSetChanged();

喜欢 - :

viewholder.mcontwcustom.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     positionOfButtonClick = i; 
     notifyDataSetChanged(); 
    //your other code  
}); 

然后,在getView

你需要检查的位置和需要VISIBLEtextView喜欢 - :

if(i==positionOfButtonClick){ 
viewholder.mdisplayemail.setVisibility(View.VISIBLE); 
} 

现在,您getView应该是─:

@Override 
public View getView(final int i, View view, ViewGroup viewGroup) { 

wantedUsers du = wusers.get(i); 

final String mcontact = du.mcontact; 



if(view==null) { 
    viewholder = new viewholder(); 
    view = LayoutInflater.from(ws).inflate(R.layout.wantedmoviecustom, null); 
    viewholder.mcontwcustom = (Button)view.findViewById(R.id.mcontwcustom); 

    viewholder.mdisplayemail = (TextView) view.findViewById(R.id.mdisplayemail); 


if(i==positionOfButtonClick){ 
viewholder.mdisplayemail.setVisibility(View.VISIBLE); 
}else{ 
    viewholder.mdisplayemail.setVisibility(View.GONE); 
    } 


    view.setTag(viewholder); 
} else { 
    viewholder = (viewholder) view.getTag(); 
} 



if(mcontact.contains("@")) { 
    viewholder.mcontwcustom.setText("Show Email"); 
    viewholder.mdisplayemail.setText(mcontact); 
} else { 
    viewholder.mcontwcustom.setText("Call"); 
} 

viewholder.mcontwcustom.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     if(mcontact.contains("@")) { 
      int p=(Integer)view.getTag(); 



     positionOfButtonClick = i; 
     notifyDataSetChanged(); 

     } 
     else 
     { 
      Uri call = Uri.parse("tel:" + mcontact); 
      Intent surf = new Intent(Intent.ACTION_DIAL, call); 
      ws.startActivity(surf); 
     } 
    } 
}); 
viewholder.mcontwcustom.setTag(i); 
return view; 
} 
+0

@ user2269164试试这个会有帮助 – UltimateDevil

+0

@ user2269164你试过这个 – UltimateDevil

+0

谢谢你的工作。 – user2269164

0

更改代码如下所述,我认为它可以帮助你。

viewholder.mcontwcustom.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if(mcontact.contains("@")) { 
       int p=(Integer)view.getTag(); 

       viewholder.mdisplayemail.setVisibility(View.VISIBLE); 
       // viewholder.mdisplayemail.setText(mcontact); 

      } 
+0

@UltimateDevil - 它将启用最后一行中的textview,而不是我点击的那个。 – user2269164

+0

是的,等我回复 – UltimateDevil

相关问题