textview在列表视图中不可见时在某一行上单击按钮
我有一个自定义listview
其中包含button
和textview
。 textview
知名度消失了。当button
文本是“电子邮件”,并且如果我点击button
,textview
应该显示在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
点击特定的行时,如何才能制作textview
visbile
。
首先,你需要创建一个全球变量
int positionOfButtonClick = -1;
,那么你需要更新button
点击你的位置,并需要调用notifyDataSetChanged();
喜欢 - :
viewholder.mcontwcustom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
positionOfButtonClick = i;
notifyDataSetChanged();
//your other code
});
然后,在getView
你需要检查的位置和需要VISIBLE
您textView
喜欢 - :
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;
}
@ user2269164试试这个会有帮助 – UltimateDevil
@ user2269164你试过这个 – UltimateDevil
谢谢你的工作。 – user2269164
更改代码如下所述,我认为它可以帮助你。
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);
}
@UltimateDevil - 它将启用最后一行中的textview,而不是我点击的那个。 – user2269164
是的,等我回复 – UltimateDevil
你需要改变'viewholder.mdisplayemail.setVisibility();'to viewholder.mdisplayemail.setVisibility(View.VISIBLE);' – UltimateDevil
让我看看你的布局? –
@ user2269164检查我的答案可能会解决您的问题 – UltimateDevil