두 개의 액티비티가 각각 동일한 어댑터에 묶여 있습니다. 두 번째 액티비티를 열면 모든 데이터가있는 두 번째 액티비티가 열리고, cardview 너비는 첫 번째 액티비티에서 잘 작동합니다 그러나 초에 나는 폭이 내가 setLayoutParams()
을 시도하지만setLayouParams가 cardView에서 작동하지 않았습니다.
public AzkaarViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
CardView cardView=(CardView)parent.findViewById(R.id.cardview);
CardView.LayoutParams layoutParams = (CardView.LayoutParams)cardView.getLayoutParams();
layoutParams.height = CardView.LayoutParams.MATCH_PARENT;
cardView.setLayoutParams(layoutParams);
...
를 작동하지 않았다 레이아웃 수평을 match_parent
되고 싶어요 그리고 나는 이것이 적응의 코드
java.lang.NullPointerException
at com.nourabosily.aa.azkaar.AzkaarAdapter.onCreateViewHolder(AzkaarAdapter.java:37)
at com.nourabosily.aa.azkaar.AzkaarAdapter.onCreateViewHolder(AzkaarAdapter.java:23)
이 오류가 어
public class AzkaarAdapter extends RecyclerView.Adapter<AzkaarAdapter.AzkaarViewHolder> {
ArrayList<AzkarForm> azkarForms=new ArrayList<AzkarForm>();
Context ctx;
public AzkaarAdapter (ArrayList<AzkarForm> azkarForms,Context ctx){
this.azkarForms=azkarForms;
this.ctx=ctx;
}
@Override
public AzkaarViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { CardView cardView=(CardView)parent.findViewById(R.id.cardview);
CardView.LayoutParams layoutParams = (CardView.LayoutParams)cardView.getLayoutParams();
layoutParams.height = CardView.LayoutParams.MATCH_PARENT;
cardView.setLayoutParams(layoutParams);
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout,parent,false);
AzkaarViewHolder azkaarViewHolder=new AzkaarViewHolder(view,ctx,azkarForms);
ViewGroup viewGroup=(ViewGroup)parent.getParent();
CardView.LayoutParams params=(CardView.LayoutParams)(viewGroup.getLayoutParams());
params.height=800;
return azkaarViewHolder;
}
@Override
public void onBindViewHolder(AzkaarViewHolder holder, int position) {
AzkarForm azkarForm=azkarForms.get(position);
if(ctx instanceof MainActivity) {
holder.sample.setText(azkarForm.getSample());
holder.number.setText(String.valueOf(azkarForm.getNumber()));
}else{
holder.sample.setText(azkarForm.getComplete_morning());
holder.number.setText(String.valueOf(azkarForm.getNumber()));
}
int width =holder.itemView.getWidth();
ViewGroup.LayoutParams params=holder.itemView.getLayoutParams();
params.height= RelativeLayout.LayoutParams.MATCH_PARENT;
holder.itemView.setLayoutParams(params);
}
@Override
public int getItemCount() {
return azkarForms.size();
}
public static class AzkaarViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView sample, number;
Context ctx;
ArrayList<AzkarForm> azkarForms = new ArrayList<AzkarForm>();
public AzkaarViewHolder(View itemView, Context ctx, ArrayList<AzkarForm> azkarForms) {
super(itemView);
this.ctx = ctx;
if(this.ctx instanceof MainActivity)
itemView.setOnClickListener(this);
this.azkarForms = azkarForms;
sample = (TextView) itemView.findViewById(R.id.sample);
number = (TextView) itemView.findViewById(R.id.number);
}
@Override
public void onClick(View v) {
int position=getAdapterPosition();
AzkarForm azkarForm=azkarForms.get(position);
Intent intent=new Intent(this.ctx,DetailsActivity.class);
intent.putExtra("numbers",azkarForm.getNumber());
intent.putExtra("sample",azkarForm.getSample());
intent.putExtra("complete",azkarForm.getComplete_morning());
intent.putExtra("position",position);
this.ctx.startActivity(intent);
}
}
}
이 레이아웃의 코드
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
holder.cardView.setLayoutParams(params);
그것을 할
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearlayout">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cardview">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:id="@+id/relative">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sample"
android:text="Noura Ali Bosily"
android:textSize="20dp"
android:textStyle="bold"
android:gravity="center"
android:layout_alignParentTop="true"
android:layout_marginTop="15dp"
android:layout_marginLeft="20dp"
android:layout_alignParentRight="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/number"
android:text="5"
android:textSize="20dp"
android:textStyle="bold"
android:gravity="center"
android:layout_marginTop="5dp"
android:layout_marginLeft="20dp"
android:layout_alignParentLeft="true"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
대신
해당 페이지에 전체 코드를 게시 할 수 있습니까? –
게시물을 편집했습니다. –