2016-11-13 1 views
0

J'ai une liste avec CursorAdapter (pas simplecursordadpter) et j'essaye de changer la gravité de mon élément de liste.Modifier la gravité de l'élément de liste dans les résultats Android dans une exception

Les problèmes semble être à la ligne:

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) row.getLayoutParams(); 

Voici ma liste d'articles de la ligne xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:minWidth="100dp" 
     android:background="@drawable/selector_items" 
     android:descendantFocusability="blocksDescendants" 
     android:padding="3dp" 
     android:layout_margin="2dp"> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:minWidth="280dp" 
      android:background="@drawable/bolha_b" 
      android:layout_gravity="start" 
      > 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 
      <TextView 
       android:id="@+id/text_tit_mg" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:shadowColor="@color/textShadow" 
       android:shadowDx="1" 
       android:shadowDy="1" 
       android:text="teste" 
       android:layout_weight="1" 
       android:layout_gravity="center_horizontal" 
       android:paddingRight="5dp" 
       android:paddingLeft="5dp" 
       android:layout_margin="5dp" 
       android:textColor="@color/black" 
       android:textStyle="bold" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 
      <ImageView 
       android:id="@+id/img_delete" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/bin" 
       android:clickable="true" 
       android:layout_gravity="right" 
       android:layout_weight="0" 

       /> 
      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="horizontal"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingLeft="5dp" 
       android:layout_marginLeft="5dp" 
       android:text="De:" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/black" 
       android:textStyle="bold" 
       /> 
      <TextView 
       android:id="@+id/txtfrom" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:shadowColor="@color/textShadow" 
       android:layout_marginLeft="5dp" 
       android:text="nomefrom" 
       android:lines="1" 
       android:singleLine="true" 
       android:ellipsize="end" 
       android:textColor="@color/black" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      </LinearLayout> 

      <net.techabout.medappointment.TextViewFixTouchConsume 
       android:id="@+id/text1" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_marginLeft="5dp" 
       android:shadowColor="@color/textShadow" 
       android:shadowDx="1" 
       android:shadowDy="1" 
       android:text="" 
       android:textColorLink="@color/colorBackground" 

       android:layout_weight="1" 
       android:textColor="#040404" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 


      <TextView 
       android:id="@+id/text2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="bottom|end" 
       android:text="" 
       android:layout_marginRight="5dp" 
       android:textColor="#999" 
       android:textAppearance="?android:attr/textAppearanceSmall" /> 

      <Button 
       android:id="@+id/but_answer" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:clickable="true" 
       android:text="Responder" 
       android:background="@drawable/greenbutton" 
       style="@style/MyButtonStyleSmall" 
       android:layout_gravity="center_horizontal" 

       /> 
     </LinearLayout> 

</LinearLayout> 

que je fais:

public View getView(int position, View convertView, ViewGroup parent) { 
     View row = super.getView(position, convertView, parent); 
     LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) row.getLayoutParams(); 
     if (position % 2 == 0) { 
      row.setBackgroundResource(R.drawable.bolha_a);//green 
      params.gravity = Gravity.END; 
      row.setLayoutParams(params); 
      row.setPadding(50, 10, 20, 10); 
     } else { 
      row.setBackgroundResource(R.drawable.bolha_b);//white 
      params.gravity = Gravity.START; 
      row.setLayoutParams(params); 
      row.setPadding(30, 10, 30, 10); 
     } 
     return row; 
} 

Mais je reçois une exception en disant:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: net.techabout.medappointment, PID: 11498 
        java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 
         at net.techabout.medappointment.MessagesCursorAdapter.getView(MessagesCursorAdapter.java:95) 
         at android.widget.AbsListView.obtainView(AbsListView.java:2346) 
         at android.widget.ListView.makeAndAddView(ListView.java:1875) 
         at android.widget.ListView.fillSpecific(ListView.java:1354) 
         at android.widget.ListView.layoutChildren(ListView.java:1674) 
         at android.widget.AbsListView.onLayout(AbsListView.java:2148) 

Toute aide, s'il vous plaît. Voici le code complet:

public class MessagesCursorAdapter extends CursorAdapter { 
    /** 
    * Cache of the children views 
    */ 
    public static class ViewHolder { 
     public final Button butAnswer; 
     public ImageView imgDelete; 
     public final TextView mTitle; 
     public final TextView mMsgFrom; 
     public final TextView mMsg; 
     public final TextView mTime; 

     public ViewHolder(View view) { 
      mTitle = (TextView) view.findViewById(R.id.text_tit_mg); 
      mMsgFrom = (TextView) view.findViewById(R.id.txtfrom); 
      mMsg = (TextView) view.findViewById(R.id.text1); 
      mTime = (TextView) view.findViewById(R.id.text2); 
     } 
    } 

    public MessagesCursorAdapter(Context context, Cursor c, int flags) { 
     super(context, c, flags); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     int layoutId = R.layout.msg_list_item; 
     View view = LayoutInflater.from(context).inflate(layoutId, parent, false); 

     ViewHolder viewHolder = new ViewHolder(view); 
     view.setTag(viewHolder); 

     return view; 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = super.getView(position, convertView, parent); 
     LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) row.getLayoutParams(); 
     if (position % 2 == 0) { 
      row.setBackgroundResource(R.drawable.bolha_a);//green 
      params.gravity = Gravity.END; 
      row.setLayoutParams(params); 
      row.setPadding(50, 10, 20, 10); 
     } else { 
      row.setBackgroundResource(R.drawable.bolha_b);//white 
      params.gravity = Gravity.START; 
      row.setLayoutParams(params); 
      row.setPadding(30, 10, 30, 10); 
     } 
     return row; 
    } 

    @Override 
    public void bindView(View view, Context context, final Cursor cursor) { 
     ViewHolder viewHolder = (ViewHolder) view.getTag(); 
     String temp = cursor.getString(cursor.getColumnIndexOrThrow(DataProvider.COL_TIT)); 
     viewHolder.mTitle.setText(temp); 

     temp = cursor.getString(cursor.getColumnIndexOrThrow(DataProvider.COL_MSG)); 

    } 
} 
+0

duplication possible: [ClassCastException LinearLayout LayoutParams] (http://stackoverflow.com/questions/14004063/classcastexception-linearlayout-layoutparams) – c0rtexx

+0

pourquoi appelez-vous super.getView? – Pooya

+0

Merci à tous. Je viens de le résoudre. –

Répondre

0

Changer LinearLayout.LayoutParams à AbsListView.LayoutParams.

+0

Mais, AbsListView.LayoutParams n'a aucune propriété de gravité pour le définir. –

+0

Je poste mon article de liste xml –