Android: почему мой стиль ListView удаляется, когда элемент списка прокручивается за пределы экрана? - PullRequest
1 голос
/ 01 марта 2012

В настоящее время у меня есть настраиваемый адаптер списка, который имеет некоторую логику, которая скрывает / отображает определенное изображение в строке в зависимости от переменной.

Изначально логика работает при первом запуске приложения.(ImageView скрыто / отображается соответственно).

Но как только я прокручиваю экран вверх и вниз, в конечном итоге ImageView всей строки скрывается навсегда.

Кто-нибудь знает, как решитьэта проблема?

вот мой адаптер:

public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        PostHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new PostHolder();
            holder.postThumb = (ImageView)row.findViewById(R.id.post_Thumb);
            holder.postComments = (TextView)row.findViewById(R.id.post_comments);
            holder.postInfo = (TextView)row.findViewById(R.id.item_subtitle);
            holder.postScore = (TextView)row.findViewById(R.id.post_score);
            holder.postTitle = (TextView)row.findViewById(R.id.item_title);
            holder.postThumbHolder = (LinearLayout)row.findViewById(R.id.post_Thumb_holder);
            row.setTag(holder);
        }
        else
        {
            holder = (PostHolder)row.getTag();
        }

        HashMap<String, String> post = data.get(position);

        if(post.get("thumbnail").equals("default") || post.get("thumbnail").equals("self")){
            holder.postThumbHolder.setVisibility(View.GONE);
        }

        holder.postComments.setText(post.get("comments"));
        holder.postInfo.setText(post.get("info"));
        holder.postScore.setText(post.get("score"));
        holder.postTitle.setText(post.get("title"));

        return row;
    }


    static class PostHolder
    {
        LinearLayout postThumbHolder;
        ImageView postThumb;
        TextView postComments;
        TextView postScore;
        TextView postTitle;
        TextView postInfo;      
    }

Ответы [ 2 ]

2 голосов
/ 26 июля 2012

Это связано с тем, как Android превращает фон элементов списка в растровые изображения, как только вы начинаете прокручивать.Чтобы убедиться, что ваши изображения отображаются после прокрутки, вы также должны устанавливать это свойство каждый раз, когда вызывается адаптер getView, делайте это в другой части вашей переменной check

if(post.get("thumbnail").equals("default") || post.get("thumbnail").equals("self")){
        holder.postThumbHolder.setVisibility(View.GONE);
} else {
        holder.postThumbHolder.setVisibility(View.VISIBLE);
}
0 голосов
/ 01 марта 2012

Установите видимость View.VISIBLE на postThumbHolder где-нибудь. В другом блоке вашего if (post.get... пункт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...