1

リストビューがあり、リストビュー内のすべてのアイテムは、Javaコードによって追加されたテキストビューとテキストビューのビューグループを備えた線形レイアウトです。しかし、リストには正しいリスト項目のテキストビューが表示されていますが、ビューグループ内にはランダムなテキストビューが表示されています。提案やアイデアを持っている人はいますか?


前回はコードを追加しなかったことをお詫びします。今ここにあります:

View view = null;
        Business b = filteredBusinessList.get(position);
        String ba = "";
        if(b.getAddress().length() > 0 && b.getAddress() != null) {
            ba += b.getAddress()+", ";
        }
        if(b.getDistrict().length() > 0 && b.getDistrict() != null) {
            ba += b.getDistrict();
        }
        if(b.getZoneName().length() > 0 && b.getZoneName() != null) {
            ba += ", " + b.getZoneName();
        }
        if(convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.business_list_item_nolocation, null);
            final NoLocationViewHolder viewHolder = new NoLocationViewHolder();
            viewHolder.tvBusinessName = (TextView) view.findViewById(R.id.tvBusinessName);
            viewHolder.tvBusinessAddress = (TextView) view.findViewById(R.id.tvBusinessAddress);
            viewHolder.flowLayout = (FlowLayout) view.findViewById(R.id.flow_layout);

            if(b.getContactNumber() != null && !b.getContactNumber().equals("")) {
                String[] contactNumbers = b.getContactNumber().split(",");
                int count = contactNumbers.length;
                for(final String numbers : contactNumbers) {
                    Log.d("NUMBER",b.getName() +">>> "+  numbers);
                    final FlowViewHolder fvh = new FlowViewHolder();
                    fvh.tvCon = new TextView(context);
                    fvh.tvCon.setId(11+count++);
                    fvh.tvCon.setText(numbers.trim());
                    fvh.tvCon.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    fvh.tvCon.setTextSize(14);
                    fvh.tvCon.setTextColor(Color.WHITE);
                    fvh.tvCon.setTypeface(null, Typeface.BOLD);
                    fvh.tvCon.setPadding(7, 4, 7, 4);
                    fvh.tvCon.setShadowLayer(1, 1, 1, Color.BLACK);
                    fvh.tvCon.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.business_nolocation_call_bg));
                    fvh.tvCon.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            showAlert("contact", numbers);                  
                        }
                    });
                    fvh.tvCon.setOnTouchListener(new OnTouchListener() {

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                            switch (event.getAction()) {
                                case MotionEvent.ACTION_DOWN:   ((TextView)v).setBackgroundDrawable(context.getResources().getDrawable(R.drawable.business_nolocation_call_bg_pressed));
                                                                                                ((TextView)v).setTypeface(null, Typeface.BOLD);
                                                                                                break;
                                case MotionEvent.ACTION_CANCEL:
                                case MotionEvent.ACTION_UP: ((TextView)v).setBackgroundDrawable(context.getResources().getDrawable(R.drawable.business_nolocation_call_bg));
                                                                                    break;
                            }
                            return false;
                        }
                    });
                    FlowViewHolder fv = (FlowViewHolder) viewHolder.flowLayout.getTag();
                    viewHolder.flowLayout.addView(fvh.tvCon,new FlowLayout.LayoutParams(3, 3));
                    viewHolder.flowLayout.setTag(fvh);
                }
            }
            view.setTag(viewHolder);
        } else {
            view = convertView;
        }
        NoLocationViewHolder holder = (NoLocationViewHolder) view.getTag();
        holder.tvBusinessName.setText(b.getName());
        holder.tvBusinessAddress.setText(ba);
        return view;


このサイトで指定されている FlowLayout を使用しました

4

0 に答える 0