2

リストがあります。各行には、左側に画像、右側に2つのテキストビューが含まれています。サーバーフラグに基づいて、アプリケーションはシステムメディアプレーヤーを開くか、別のアクティビティを開いてニュースの詳細を表示します。

アダプターで、ビデオ画像(ニュース画像ではない)の上に別の画像を追加したいと思います。したがって、行のXMLファイルには、可視性が「非表示」に設定されている別の画像ビューがあり、ビデオである各行に対して「可視」に設定したいと思います。

getView()メソッドは次のようになります。

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;        

            if (convertView == null) {
                convertView     = myInflater.inflate(R.layout.list_news_adapter, null);
                holder          = new ViewHolder();
                holder.ivIcon   = (ImageView)   convertView.findViewById(R.id.list_news_icon);
                holder.ivPlay   = (ImageView)   convertView.findViewById(R.id.list_news_PlayIcon);
                holder.tvTitle  = (TextView)    convertView.findViewById(R.id.list_news_title);
                holder.tvDate   = (TextView)    convertView.findViewById(R.id.list_news_date);

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

            holder.tvTitle.setText(mLatestNews.getTitle().get(position));
            holder.tvDate.setText(localTime.get(position));

            if(mLatestNews.getType().get(position).equalsIgnoreCase("VIDEO"))
                holder.ivPlay.setVisibility(View.VISIBLE);

            // Load and display image
            String imageUrl = (mLatestNews.getImageLink().get(position));
            imageUrl = imageUrl.trim().replaceAll(" ", "%20");
            imageLoader.displayImage(imageUrl, holder.ivIcon, options);

            return convertView;
    }

    static class ViewHolder {
        ImageView ivIcon;
        ImageView ivPlay;
        TextView tvTitle;
        TextView tvDate;
    }

通常、リストの最初の4つの項目はビデオで、残りはニュースです。アプリケーションを実行すると、最初の4つのアイテムだけでなく、一部のニュースアイテムの2番目の画像もアクティブ化(表示に設定)されます。

正しい結果は次のようになります。 ここに画像の説明を入力してください

ただし、リストをスクロールすると、2番目の画像(白い三角形)がニュースアイテムに追加されます。この画像のように: ここに画像の説明を入力してください

なぜそれが起こるのか分かりません。任意の提案をいただければ幸いです。

4

1 に答える 1

3

何てことだ!!!!

「その他」が必要なだけです。次のようにコードを変更しました。

if(mLatestNews.getType().get(position).equalsIgnoreCase("VIDEO"))
                holder.ivPlay.setVisibility(View.VISIBLE);
            else
                holder.ivPlay.setVisibility(View.INVISIBLE);

今、それは働いています。

于 2012-06-15T02:47:19.970 に答える