0

2 つの異なるレイアウト (mycontentmtall または mycontenmotall) を使用するリストビューがあります。これらの 2 つのレイアウトをクリック時に変更したい (再度、オブジェクトを連続してクリックして、作成した 2 つの新しいレイアウト (mycontentmtallexapand または mycontentmoallexpand) から 1 つを選択したとき)。

リストビューでアイテムをクリックしても、レイアウトの変更が表示されないという問題に直面しています。

    @Override
            public View getView(final int position, View convertView,
                    ViewGroup parent) {

                 final ViewHolder holder;
                // int type = getItemViewType(position);
                final Message message = getItem(position);

                if (convertView == null) {

                    holder = new ViewHolder();
                    // if (type == TYPE_MT) {
                    if (!message.getIsMO()) {
                        convertView = mInflater.inflate(R.layout.mycontentmtall,
                                null);
                        holder.body = (TextView) convertView
                                .findViewById(R.id.bodyMT);
                        holder.date = (TextView) convertView
                                .findViewById(R.id.dateMT);
                        holder.from = (TextView) convertView
                                .findViewById(R.id.fromMT);
                        holder.status = (TextView) convertView
                                .findViewById(R.id.statusMT);
                    } else {
                        convertView = mInflater.inflate(R.layout.mycontentmoall,
                                null);
                        holder.body = (TextView) convertView
                                .findViewById(R.id.bodyMO);
                        holder.date = (TextView) convertView
                                .findViewById(R.id.dateMO);
                        holder.from = (TextView) convertView
                                .findViewById(R.id.fromMO);
                        holder.status = (TextView) convertView
                                .findViewById(R.id.statusMO);
                    }
                    convertView.setTag(holder);

                }

                else {

                    holder = (ViewHolder) convertView.getTag();
                }
            //  Boolean flag = false;


            //  final String body = message.getBody();
                convertView.setOnClickListener(new OnClickListener() {
                    private int pos = position;

                    @Override
                    public void onClick(View v) {

                        Toast.makeText(context, "Click-" + pos, Toast.LENGTH_SHORT)
                                .show();



                        View newConvertView = null;
                        if (!message.getIsMO()){
                        newConvertView = mInflater.inflate(R.layout.mycontentmtallexapand,
                                null);
                        holder.body = (TextView) newConvertView
                                .findViewById(R.id.bodyMTExpand);
                        holder.date = (TextView) newConvertView
                                .findViewById(R.id.dateMTExpand);
                        holder.from = (TextView) newConvertView
                                .findViewById(R.id.fromMTExpand);
                        holder.status = (TextView) newConvertView
                                .findViewById(R.id.statusMTExpand);


                        }
                        else
                        {
                            newConvertView = mInflater.inflate(R.layout.mycontentmoallexpand,
                                    null);
                            holder.body = (TextVi`enter code here`ew) newConvertView
                                    .findViewById(R.id.bodymoExpand);
                            holder.date = (TextView) newConvertView
                                    .findViewById(R.id.datemoExpand);
                            holder.from = (TextView) newConvertView
                                    .findViewById(R.id.frommoExpand);
                            holder.status = (TextView) newConvertView
                                    .findViewById(R.id.statusmoExpand);
                        }

    //                  newConvertView
    //                              .setLayoutParams(new LayoutParams(
    //                                      LinearLayout.LayoutParams.MATCH_PARENT,
    //                                      LinearLayout.LayoutParams.WRAP_CONTENT));
                        holder.body.setText(message.getBody());
                        holder.date.setText(message.getDate());
                        holder.from.setText(message.getPhoneNumber());
                        holder.status.setText(String.valueOf(message.getStatus()));
    //                  flag = true;

                    }
                });
//  s=body.substring(0, 20);
                holder.body.setText(message.getBody());
            holder.date.setText(message.getDate());
            holder.from.setText(message.getPhoneNumber());
            holder.status.setText(String.valueOf(message.getStatus()));

            return convertView;

        }
4

1 に答える 1

1

convertViewのonclick()で、新しいビュー(newConvertview)を作成する代わりに、convertViewを使用してみてください。最初に、convertViewの要素を削除してから、新しいレイアウトを拡張します。

これがあなたのために壊れることを願っています..

于 2012-08-16T10:00:24.033 に答える