0

カスタムグリッドビューでデータを表示しているアプリを1つ作成しましたが、問題は、スクロールして下に移動して上に戻ると、すべてのアイテムの位置が自動的に変更される可能性があり、表示されない場合があります。スクロール後。これが私のコードです。getView

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder viewholder;
        // LayoutInflater inflator = activit.getLayoutInflater();



        if(convertView == null) { // recycled view is null so create it.
            viewholder = new ViewHolder();
        convertView = inflator.inflate(R.layout.gridviewrow, null);

        viewholder.imgvGridItem = (RelativeLayout) convertView
                .findViewById(R.id.rlGreidItemicon);
        viewholder.txtGridItemlabel = (TextView) convertView
                .findViewById(R.id.txtGridItemlabel);

            if ((lstpinfo.get(position).appname.toString()) != null) {

                viewholder.imgvGridItem.addView(getimageviewimage(lstpinfo
                        .get(position).icon));
                viewholder.txtGridItemlabel
                        .setText(lstpinfo.get(position).appname.toString());

            }
        }

        return convertView;

    }
4

1 に答える 1

0

ビュー変換ロジックが完全に実装されていないようです。

スクロールすると、null以外のconvertViewが表示されます。そのときは、新しいデータを設定する必要があり、その場合は何もしていません。 convertViewとそれを使用します。

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            System.out.println("getView " + position + " " + convertView);
            ViewHolder holder = null;

              if (convertView == null) {
                convertView = mInflater.inflate(R.layout.item1, null);
                holder = new ViewHolder();
                holder.textView = (TextView)convertView.findViewById(R.id.text);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder)convertView.getTag();
            }

         holder.textView.setText(mData.get(position));//<========== see it .....
            return convertView;
        }

    }
于 2012-05-31T08:35:08.723 に答える