尝试在List项上设置边距时出现ClassCastException

时间:2014-02-22 21:42:34

标签: java android android-layout android-listview

我正在尝试创建一个方法,可以在给定距离的情况下水平移动列表元素。 list元素是RelativeLayout,因此我执行以下操作:

    // cast View to RelativeLayout 
    RelativeLayout listLayout = (RelativeLayout) listElement;
    // Get layout params
    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) listLayout.getLayoutParams();
    //set the margins
    layoutParams.setMargins(distance,0,0,0);
    // ??
    listLayout.setLayoutParams(layoutParams);
    // Profit!!!

我检查了调试器,列表项是RelativeLayout,甚至在我投射之前(只是为了确保)。但是我得到以下内容:

java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

我已经尝试了很多变化,并且它们都因施法错误而停止。但我无法弄清楚为什么,因为正在使用RelativeLayout,所以我应该能够调用该方法并获取一个RelativeLayout.LayoutParams对象。

1 个答案:

答案 0 :(得分:0)

您的listLayout位于不是RelativeLayout的其他视图中,因此LayoutParams不是RelativeLayout.LayoutParam ...尝试使用ViewGroup.LayoutParams intead,如下所示:

// Get layout params
ViewGroup.LayoutParams layoutParams = listLayout.getLayoutParams();