有人能幫助我知道發生了什麼,在RecyclerView致命異常:主要
Adapter1.java:48
已造成我recyclerview這個錯誤我試圖改變變量名,但它仍然給了我同樣的錯誤。
java.lang.NullPointerException
at ke.co.clickaway.squirrel.clickawaytechnologies.adpter.Adapter1.getItemCount(Adapter1.java:48)
的代碼如下
public class MainActivity extends AppCompatActivity {
Toolbar toolbar;
ArrayList<DataList> list;
//in the onCreate Bundle
RecyclerView rview=(RecyclerView) findViewById(R.id.rview);
Adapter1 adapter1=new Adapter1(this,list);
rview.setAdapter(adapter1);
StaggeredGridLayoutManager lm=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
rview.setLayoutManager(lm);
信息類
public class DataList {
public int imageView;
public String title;
public static List<DataList> getData(){
ArrayList<DataList> mList=new ArrayList<>();
int[] imag={R.drawable.web_ic,R.drawable.palette_ic,R.drawable.pencil,R.drawable.sware_ic,R.drawable.phone_ic};
String[] lable={"Web Development","Branding","Graphic Design","Systems","Mobile Apps"};
for(int i=0;i<lable.length&& i<imag.length;i++){
DataList dataList=new DataList();
dataList.title=lable[i];
dataList.imageView=imag[i];
mList.add(dataList);
}
return mList;
}
}
和我的適配器
public class Adapter1 extends RecyclerView.Adapter<Adapter1.ViewHolder> {
private List<DataList> mList;
private Context mContext;
public Adapter1(Context context,List<DataList> list){
mList=list;
mContext=context;
}
private Context getContext(){
return mContext;
}
@Override
public Adapter1.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context=parent.getContext();
LayoutInflater inflater=LayoutInflater.from(context);
View customView=inflater.inflate(R.layout.custom_view,parent,false);
ViewHolder viewHolder=new ViewHolder(customView);
return viewHolder;
}
@Override
public void onBindViewHolder(Adapter1.ViewHolder holder, int position) {
DataList dataList=mList.get(position);
holder.imag.setImageResource(dataList.imageView);
holder.lable.setText(dataList.title);
}
@Override
public int getItemCount() {
return mList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imag;
public TextView lable;
public ViewHolder(View itemView) {
super(itemView);
imag= (ImageView)itemView.findViewById(R.id.imageView1);
lable=(TextView)itemView.findViewById(R.id.textView1);
}
}
}
我的自定義視圖
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView1"
android:layout_gravity="center"
android:layout_width="88dp"
android:layout_height="88dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:src="@drawable/one" />
<TextView
android:id="@+id/textView1"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:text="dummy Text" />
</LinearLayout>
在activty_main.xml
<android.support.v7.widget.RecyclerView
android:layout_below="@id/appbarlayout"
android:id="@+id/rview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
難道不我必須有一個用於數據的獲取方法從我的DataList –
嘿非常感謝它的工作我合併後你的答案與@ casabapap的答案.... –