Android 为布局指定了错误的颜色
我的应用程序从我的片段的Android 为布局指定了错误的颜色,android,android-layout,android-xml,Android,Android Layout,Android Xml,我的应用程序从我的片段的onCreateView()方法中从我的站点API请求一些JSON数据: apiService.getJson(5, new Callback<PostData>() { @Override public void success(PostData postData, Response response) { final PostAdapter adapter = new PostAdapter(getActivity(),
onCreateView()方法中从我的站点API请求一些JSON数据:
apiService.getJson(5, new Callback<PostData>() {
@Override
public void success(PostData postData, Response response) {
final PostAdapter adapter = new PostAdapter(getActivity(), postArray);
postArray.addAll(postData.getData());
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void failure(RetrofitError retrofitError) {
retrofitError.printStackTrace();
}
});
布局:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/post_bg_border">
<shape android:shape="rectangle">
<solid android:color="#000000" />
</shape>
</item>
<item android:left="5dp">
<shape android:shape="rectangle">
<solid android:color="@color/bg" />
</shape>
</item>
</layer-list>
但是,它会将颜色指定给下一篇文章,而不是当前文章。我的代码怎么了?else分支出错,您应该删除它。converView仅为null一次。在您的情况下,在分配颜色后,第一次在else分支中(convertView==null)
,您将反复返回相同的视图
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.post_layout, parent, false);
}
LayerDrawable shapeLayout = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.link_info_bg);
GradientDrawable shape = (GradientDrawable) shapeLayout.findDrawableByLayerId(R.id.link_info_bg_border);
shape.setColor(Color.parseColor("#" + post.getColor()));
如果没有else
,您需要的是else分支是错误的,您应该删除它。converView仅为null一次。在您的情况下,在分配颜色后,第一次在else分支中(convertView==null)
,您将反复返回相同的视图
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.post_layout, parent, false);
}
LayerDrawable shapeLayout = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.link_info_bg);
GradientDrawable shape = (GradientDrawable) shapeLayout.findDrawableByLayerId(R.id.link_info_bg_border);
shape.setColor(Color.parseColor("#" + post.getColor()));
如果没有else
,这就是您想要的忘记了从以前的一些测试中删除它,但是现在颜色一点也没有改变。它只是保持黑色(默认设置的颜色):/更正,它正在设置每篇文章使用的第一种颜色。忘记从以前的一些测试中删除它,但现在颜色根本没有改变。它只是保持黑色(默认设置的颜色):/更正,这是设置每篇文章使用的第一种颜色。