0

このJSON応答をAndroidのListViewに解析しようとしています。ここでは、性別に応じて画像を表示し、男性レコード用のボタンを追加して、リストビューを変更しようとしています。

最後の2つのエントリを除いて、ロジックは正常に機能しています。JohnWayneとLeonardo Dicaprioには詳細ボタンがあり、JohnnyDeppとRaviTambdaにも同じことが予想されます。同じようにガイドしてください。

このコードを使用して、性別によって区別しようとしています

 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 に答える