0

我正在尝试将此 JSON 响应解析到 android 中的 ListView 上,我试图通过根据性别显示图像并为男性记录添加按钮来修改列表视图。

逻辑工作正常,除了最后两个条目。约翰韦恩和莱昂纳多迪卡普里奥有详细信息按钮,约翰尼德普和拉维坦布达也是如此。请指导我。

使用此代码,我试图根据性别区分它们

 if(rowData.mgender.equalsIgnoreCase("male"))
                {
                    imageViewStatus.setImageResource(R.drawable.male);
                }
    else{
                    imageViewStatus.setImageResource(R.drawable.female);
                button.setVisibility(View.GONE);

                }

我的输出

编辑 1

public View getView(final int position, View convertView, ViewGroup parent){
            ViewHolder holder = null;
            TextView title = null;
            TextView detail = null;
            TextView data=null;
            TextView message=null;

            ImageView imageViewStatus=null;
            Button button=null;

            final RowData rowData= getItem(position);
            if(null == convertView)

            {
                convertView = layoutInflater.inflate(R.layout.record, null);
                holder = new ViewHolder(convertView);
                convertView.setTag(holder);
            }

            holder = (ViewHolder) convertView.getTag();

            button=(Button)holder.getProceedButton();


            message=holder.getEmail();
            message.setText(rowData.mEmail);

            title = holder.getName();
            title.setText(rowData.mName);

            detail = holder.getAddress();
            detail.setText(rowData.mAdress);                                                    

            data= holder.getPhoneNumber();
            data.setText(rowData.mMobile+" "+rowData.mOffice);

            imageViewStatus=holder.getImage();

            System.out.println("This is the gender "+rowData.mgender);
            if(rowData.mgender.equalsIgnoreCase("male"))
            {
                imageViewStatus.setImageResource(R.drawable.male);
}

            else{
                imageViewStatus.setImageResource(R.drawable.female);
                System.out.println("Button Visibility"+button.getVisibility());

                button.setVisibility(View.GONE);

            }

            return convertView;
        }
4

1 回答 1

1

请记住,当您滚动 ListView 子项时,它们总是会被重用。当您根据 中的某些条件设置属性时getView(),您必须在不满足条件时恢复该属性。当性别为女性时,您隐藏了按钮,但是当此视图被重用于填充男性联系人时,该按钮仍然不可见,您必须再次将其设置为可见。

看一下这个:

if(rowData.mgender.equalsIgnoreCase("male"))
{
    imageViewStatus.setImageResource(R.drawable.male);
    button.setVisibility(View.VISIBLE); // You need to add this line in your code
} else {
    imageViewStatus.setImageResource(R.drawable.female);
    button.setVisibility(View.GONE);
}
于 2013-02-07T12:58:28.383 回答