无法在android中仅在Listview的一行上显示布局

无法在android中仅在Listview的一行上显示布局,android,listview,baseadapter,Android,Listview,Baseadapter,我使用BaseAdapter显示了一个ListView。当在特定行上单击ImageView时,我试图显示布局,即当我在第1行单击ImageView时,布局应仅在第1行可见,而不在ListView的任何其他行可见。我引用了链接,但当我单击某一行时,布局在其他行上也可见。我已经完成了以下编码。有人能帮我解决这个问题吗 int prev=-1; @Override public View getView(final int position, View converView, ViewGroup pa

我使用
BaseAdapter
显示了一个
ListView
。当在特定行上单击
ImageView
时,我试图显示
布局,即当我在第1行单击ImageView时,布局应仅在第1行可见,而不在ListView的任何其他行可见。我引用了链接,但当我单击某一行时,布局在其他行上也可见。我已经完成了以下编码。有人能帮我解决这个问题吗

int prev=-1;
@Override
public View getView(final int position, View converView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View row = converView;
    holder = null;
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (row == null) {
        row = inflater.inflate(R.layout.mybag_row, parent, false);
        holder = new ViewHolder();
        holder.tv_mybag_name = (TextView) row
                .findViewById(R.id.tv_mybag_name);
        holder.tv_prod_price = (TextView) row
                .findViewById(R.id.tv_prod_price);
        holder.tv_mybag_size = (TextView) row
                .findViewById(R.id.tv_mybag_size);
        holder.tv_delivery = (TextView) row.findViewById(R.id.tv_delivery);
        holder.tv_mybag_price = (TextView) row
                .findViewById(R.id.tv_mybag_price);
        holder.imv_mybag_img = (ImageView) row
                .findViewById(R.id.imv_mybag_img);
        holder.imv_bag_preferences = (ImageView) row
                .findViewById(R.id.imv_bag_preferences);
        holder.lnr_dropdwn = (LinearLayout) row
                .findViewById(R.id.lnr_dropdwn);

        row.setTag(holder);
    } else {
        holder = (ViewHolder) row.getTag();
    }

    Ion.with(holder.imv_mybag_img).placeholder(R.drawable.ic_launcher)
            .error(R.drawable.ic_launcher)
            .load(arr_mybag.get(position).getMybag_img_url());
    holder.tv_mybag_name.setText(arr_mybag.get(position).getMybag_name());
    Log.i("product name in bag", arr_mybag.get(position).getMybag_name());
    holder.lnr_dropdwn.setVisibility(View.GONE);
    holder.imv_bag_preferences.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            holder.lnr_dropdwn
                    .setVisibility(position == prev ? View.VISIBLE
                            : View.GONE);
            prev = position;
            notifyDataSetChanged();

        }
    });

    return row;
}

static class ViewHolder {
    TextView tv_mybag_name, tv_prod_price, tv_mybag_size, tv_delivery,
            tv_mybag_price;
    ImageView imv_mybag_img, imv_bag_preferences;
    LinearLayout lnr_dropdwn;

}

在pojo类中创建一个布尔变量,如下所示

private boolean isClicked;
    public boolean isClicked() {
        return isClicked;
    }

    public void setIsClicked(boolean isClicked) {
        this.isClicked = isClicked;
    }
//使其更改为getview

    if(isClicked())
    {

            holder.lnr_dropdwn
                    .setVisibility(View.VISIBLE);
    `}
    else
    {

            holder.lnr_dropdwn
                    .setVisibility(View.GONE);
    }`
    holder.imv_bag_preferences.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

arr_mybag.get(position).setIsClicked(true);
notifydatasetchanged()


您是否尝试过添加
holder.lnr_dropdwn.setVisibility()
onClick()
之外,每次都重置视图。@hypd09我试过了,但没有help@Tiny您是否试图隐藏除所选行之外的其他行?在我的xml文件中,我已将visibility=gone for
lnr\U dropdwn
layoutNo设置为gone,在适配器中,除非每次单击视图(position=prev)。
    }
});