1

这是我的自定义适配器中的代码(棕色的代码),当最初建立列表时,当我向下滚动并再次向上滚动列表中的所有行时,将适当的边距应用于有效项目,将边距左移 20 我是什么做错了请尽快回复

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

        final ViewHolder holder;
        // getting data
        final ViewMovieDetailsModel_ViewComments movies = getItem(position);

        if (convertView == null) 
        {
            convertView = View.inflate(context, R.layout.comment_row, null);                
            holder = new ViewHolder();

            //getting handles

            holder.comments_linearLayout = (LinearLayout) convertView.findViewById(R.id.comments_linearLayout);
            holder.commenter_textView = (TextView) convertView.findViewById(R.id.comment_row_commenter);
            holder.commented_on_textView = (TextView) convertView.findViewById(R.id.comment_row_comment_time);
            holder.comment_text_textView = (TextView) convertView.findViewById(R.id.comment_row_comment_text);
            holder.reply_button = (Button) convertView.findViewById(R.id.comment_row_reply_button);

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

        if (movies != null) 
        {
            if (((movies.getParent_comment_id()).toString().equals("null")) && session.isLoggedIn()==true) {
                holder.reply_button.setVisibility(View.VISIBLE);
            }else{
                holder.reply_button.setVisibility(View.INVISIBLE);
            }


`if (!((movies.getParent_comment_id()).toString().equals("null"))) 
{

LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
                    params.setMargins(20, 0, 0, 0);
                    holder.comments_linearLayout.setLayoutParams(params);
}`


            holder.commenter_textView.setText(movies.getUsername_commentor());

            holder.commenter_textView.setTag(movies.getUser_id_commentor());

        return convertView;
    }
4

2 回答 2

0

因为您在“if”语句中设置边距(棕色字体):

if (movies != null)

把它从这个 if 块中取出(例如把它放在返回点之前)

现在这段代码可能不会在第一次加载视图时执行,因为电影是空的。第二次调用 getView 时,movie 不为空,并且根据您的“棕色”代码设置边距。

如果这不是解决方案 - 可能内部 if 语句条件不正确(第一个“棕色”行中的条件)。所以..您自己的逻辑会阻止根据需要设置边距:)

如果有帮助,请告诉我。

于 2013-06-29T16:09:53.093 回答
0

解决此问题的一种方法是不使用,而是创建一个默认宽度为LayoutParams.setMargins(20, 0, 0, 0)空且其位置位于行内容左侧的空。默认情况下,但是当发生时,您可以将其设置为TextView20 dpView.GONEif (!((movies.getParent_comment_id()).toString().equals("null")))View.VISIBLE

于 2013-06-29T17:50:14.087 回答