2
activitymain.xml
<android.support.v7.widget.RecyclerView
android:background="@color/primary_text"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_below="@+id/adherence_text"
android:id="@+id/action_with_adherence"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
MainActivity.java
actionWithAdherence=(RecyclerView) findViewById(R.id.action_with_adherence);
//second parameter 3 represents it has 3 column
//actionWithAdherence.setLayoutManager(new LinearLayoutManager(this));
actionWithAdherence.setLayoutManager(new GridLayoutManager(this, 3));
actionWithAdherence.setAdapter(new DashboardAdherence(this, actionListWithAdherence));
Aufruf der Adapter in das gegossen werden Klasse.
Adapter xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/adherence_section"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<at.grabner.circleprogress.CircleProgressView
android:layout_gravity="center"
app:cpv_maxValue="100"
app:cpv_textSize="15dp"
app:cpv_textColor="@color/white"
app:cpv_unit="%"
app:cpv_unitSize="10dp"
app:cpv_unitColor="@color/white"
app:cpv_unitScale="1"
app:cpv_rimColor="@color/secondary_background"
app:cpv_rimWidth="10dp"
app:cpv_barWidth="4dp"
android:id="@+id/action_adherence"
android:layout_width="70dp"
android:layout_height="70dp" />
<TextView
android:layout_gravity="center"
android:id="@+id/action_name"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
android:layout_marginTop="5dp"
android:text="Exercise"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Adapter onBindAdaper():
if ((position+1)%3==0){
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)adherenceHolder.adherenceSection.getLayoutParams();
params.setMargins(0, 0, 0, 1);
adherenceHolder.adherenceSection.setLayoutParams(params);
}
else
{
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)adherenceHolder.adherenceSection.getLayoutParams();
params.setMargins(0, 0, 1, 1);
adherenceHolder.adherenceSection.setLayoutParams(params);
}
Ausgabe:
Da in meiner Haupttätigkeit ich den Blick auf die Grid setze aber in den Adapter Verwenden des linearen Layouts. Daher kann Android das lineare Layout nicht auf das Rasterlayout übertragen. THat verursacht die Ausnahme.
Gibt es eine Möglichkeit, das Layout zu übertragen?
Verwendung GridLayout.LayoutParams statt LinearLayout.LayoutParams – Nas
änderte ich aber einen anderen Fehler bekam jetzt „java.lang.ClassCastException: android.support.v7.widget.GridLayoutManager $ LayoutParams kann nicht in android.widget.GridLayout $ LayoutParams umgewandelt werden " –