这是我自定义适配器中的代码(THE CODE IN BROWN COLOR)当最初列表构建时,当我向下滚动并再次向上滚动列表中的所有行时,适当的边距应用于有效项目,将剩余边距向左移动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;
}
答案 0 :(得分:0)
因为您在'if'语句中设置了边距(棕色字体):
if (movies != null)
将它从if块中取出(例如将它放在返回点之前)
现在,此代码可能不会在第一个视图加载时执行,因为该影片为null。当第二次调用getView时,电影不为空,并且根据您的“棕色”代码设置marigin。
如果这不是解决方案 - 也许内部if语句条件不正确(第一个'褐色'行中的那个)。所以..你自己的逻辑阻止了你想要的marigins:)
如果有帮助,请告诉我。
答案 1 :(得分:0)
解决此问题的一种方法是使用LayoutParams.setMargins(20, 0, 0, 0)
,而不是使用TextView
,您可以创建一个空20 dp
,默认宽度为View.GONE
,其位置将位于左侧您的行内容。默认情况下会为if (!((movies.getParent_comment_id()).toString().equals("null")))
,但在View.VISIBLE
发生时,您可以将其设置为{{1}}