更改android中textView的可见性

更改android中textView的可见性,android,Android,我正在使用一个包含两个文本视图的列表视图。1 textView的可见性在XML中设置为已消失。单击列表项时,我希望其文本视图可见。当它再次被点击时,我希望它消失。此外,当在listView中单击任何其他项时,只有它的textView可见。我正在用下面的代码进行尝试,但当再次选择相同的列表项时,Textview不会消失 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override

我正在使用一个包含两个文本视图的列表视图。1 textView的可见性在XML中设置为已消失。单击列表项时,我希望其文本视图可见。当它再次被点击时,我希望它消失。此外,当在listView中单击任何其他项时,只有它的textView可见。我正在用下面的代码进行尝试,但当再次选择相同的列表项时,Textview不会消失

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//to change the visibility of Prevoiusly selected textview to GONE
            if (pwdView != null)
                pwdView.setVisibility(View.GONE);
            pwdView = (TextView) view.findViewById(R.id.saved_pwd);
            if (pwdView.getVisibility()==View.VISIBLE)
                pwdView.setVisibility(View.GONE);
            else
                pwdView.setVisibility(View.VISIBLE);
        }
    });

}

这是因为单击侦听器是异步调用。所以您必须通知适配器数据项中发生了更改

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (pwdView != null)
            pwdView.setVisibility(View.GONE);
        pwdView = (TextView) view.findViewById(R.id.saved_pwd);
        if (pwdView.getVisibility()==View.VISIBLE)
            pwdView.setVisibility(View.GONE);
        else
            pwdView.setVisibility(View.VISIBLE);


         yourAdapter.notifyDataSetChanged();
    }
});`
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
if(pwdView!=null)
pwdView.setVisibility(View.GONE);
pwdView=(TextView)view.findViewById(R.id.saved_pwd);
if(pwdView.getVisibility()==View.VISIBLE)
pwdView.setVisibility(View.GONE);
其他的
pwdView.setVisibility(View.VISIBLE);
yourAdapter.notifyDataSetChanged();
}
});`

这是因为单击侦听器是异步调用。所以您必须通知适配器数据项中发生了更改

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (pwdView != null)
            pwdView.setVisibility(View.GONE);
        pwdView = (TextView) view.findViewById(R.id.saved_pwd);
        if (pwdView.getVisibility()==View.VISIBLE)
            pwdView.setVisibility(View.GONE);
        else
            pwdView.setVisibility(View.VISIBLE);


         yourAdapter.notifyDataSetChanged();
    }
});`
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
if(pwdView!=null)
pwdView.setVisibility(View.GONE);
pwdView=(TextView)view.findViewById(R.id.saved_pwd);
if(pwdView.getVisibility()==View.VISIBLE)
pwdView.setVisibility(View.GONE);
其他的
pwdView.setVisibility(View.VISIBLE);
yourAdapter.notifyDataSetChanged();
}
});`
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
TextView pwdView=(TextView)view.findViewById(R.id.saved_pwd);
if(pwdView!=null)
{
pwdView.setVisibility(pwdView.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
notifyDatasetChanged();
}
});`
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
TextView pwdView=(TextView)view.findViewById(R.id.saved_pwd);
if(pwdView!=null)
{
pwdView.setVisibility(pwdView.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
notifyDatasetChanged();
}
});`

只需像在适配器类中那样操作即可

@Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView saved_id = (TextView) view.findViewById(R.id.saved_id);
        final TextView saved_password_data=(TextView)view.findViewById(R.id.saved_pwd);
        int pass_index=cursor.getColumnIndex(PwdContract.PasswordEntry.COL_PASSSWORD);
        int id_index = cursor.getColumnIndex(PwdContract.PasswordEntry.COL_LOGIN_ID);
        saved_id.setText(cursor.getString(id_index));
        saved_password_data.setText(cursor.getString(pass_index));

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (saved_password_data.getVisibility()==View.VISIBLE) {
                    saved_password_data.setVisibility(View.GONE);
                }else {
                    saved_password_data.setVisibility(View.VISIBLE);
                }
                notifyDatasetChanged();
            }
        });
    }

如果您希望第一次保存的密码数据应该可见或消失,而不是根据需要将可见性放入XML文件中

只需像在适配器类中那样操作即可

@Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView saved_id = (TextView) view.findViewById(R.id.saved_id);
        final TextView saved_password_data=(TextView)view.findViewById(R.id.saved_pwd);
        int pass_index=cursor.getColumnIndex(PwdContract.PasswordEntry.COL_PASSSWORD);
        int id_index = cursor.getColumnIndex(PwdContract.PasswordEntry.COL_LOGIN_ID);
        saved_id.setText(cursor.getString(id_index));
        saved_password_data.setText(cursor.getString(pass_index));

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (saved_password_data.getVisibility()==View.VISIBLE) {
                    saved_password_data.setVisibility(View.GONE);
                }else {
                    saved_password_data.setVisibility(View.VISIBLE);
                }
                notifyDatasetChanged();
            }
        });
    }

如果您希望第一次保存的\u密码\u数据应可见或消失,请根据需要将其放入XML文件中

将其添加到onItemClick中,此处lBooking.size()是一个列表大小

 @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            for(int j=0;j<lBooking.size();j++){
                if(i == j){
                    view.findViewById(R.id.saved_pwd).setVisibility(View.VISIBLE);
                }else {
                    lv.getChildAt(j).findViewById(R.id.saved_pwd).setVisibility(View.GONE);
                }
            }
        }
@覆盖
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){

对于(int j=0;j将其添加到onItemClick中,这里lBooking.size()是一个列表大小

 @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            for(int j=0;j<lBooking.size();j++){
                if(i == j){
                    view.findViewById(R.id.saved_pwd).setVisibility(View.VISIBLE);
                }else {
                    lv.getChildAt(j).findViewById(R.id.saved_pwd).setVisibility(View.GONE);
                }
            }
        }
@覆盖
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){

对于(int j=0;j)您也可以根据功能使用“不可见”,您希望它再次可见。您必须在.XML文件中设置textView VISIBILITY.GONE,并在代码pwdView.setVisibility(View.GONE)中删除这一行;并让我知道发生了什么。@SagarAghara我希望在单击任何其他列表项时,以前可见的textView将消失。我已将其可见性设置为XML中的消失。显示适配器代码您也可以根据功能将其与不可见一起使用。您希望它再次可见您必须在.XML文件。并删除代码pwdView.setVisibility(View.GONE)中的这一行,然后让我知道发生了什么。@SagarAghara我希望在单击任何其他列表项时,以前可见的textView会消失。我已经在XML中将其可见性设置为消失。显示适配器代码只需通过yourAdapterObject.notifyDatasetChanged()调用即可;
这是适配器的重写方法,这是因为您在onBindview()中dit更新视图。在onBindview()上添加登录名只需通过
yourAdapterObject.notifyDatasetChanged()调用它;
这是适配器的重写方法,这是因为您在onBindview()中dit更新视图。在onBindview()上添加登录名()