Java 如何使用片段中的getter和setter将数据提供给recyclerView。以字符串数组形式存储在类中的数据
我的目标是构建一个recyclerView作为GridLayoutManager,在一个片段中包含5列 我在MainActivity的onCreateView中调用我的BoardFragmentJava 如何使用片段中的getter和setter将数据提供给recyclerView。以字符串数组形式存储在类中的数据,java,android,android-layout,android-studio,android-fragments,Java,Android,Android Layout,Android Studio,Android Fragments,我的目标是构建一个recyclerView作为GridLayoutManager,在一个片段中包含5列 我在MainActivity的onCreateView中调用我的BoardFragment public class MainActivity extends AppCompatActivity { public static final String BOARD_FRAGMENT = "board_fragment"; public static final String
public class MainActivity extends AppCompatActivity {
public static final String BOARD_FRAGMENT = "board_fragment";
public static final String BOARD_NUMBER_INDEX = "board_number_index";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NumberModel number = new NumberModel();
number.setNumbers(Arrays.toString(BoardNumbers.numbers));
BoardFragment boardFragment = new BoardFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(BOARD_NUMBER_INDEX, savedInstanceState);
boardFragment.setArguments(bundle);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.mainContainer, boardFragment, BOARD_FRAGMENT);
fragmentTransaction.commit();
}
}
那块木板碎片是
public class BoardFragment extends Fragment {
private NumberModel[] mNumberModels;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_board, container, false);
Bundle bundle = this.getArguments();
if (bundle != null) {
mNumberModels = bundle.getParcelable(MainActivity.BOARD_FRAGMENT);
Parcelable[] parcelables = bundle.getParcelableArray(MainActivity.BOARD_NUMBER_INDEX);
mNumberModels = Arrays.copyOf(parcelables, parcelables.length, NumberModel[].class);
}
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.boardRecyclerView);
BoardGridAdapter adapter = new BoardGridAdapter(getActivity(), mNumberModels);
recyclerView.setAdapter(adapter);
RecyclerView.LayoutManager manager = new GridLayoutManager(getActivity(), 5);
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
return view;
}
}
BoardGridAdapter是
public class BoardGridAdapter extends RecyclerView.Adapter<BoardGridAdapter.BoardViewHolder> {
private Context mContext;
private NumberModel[] mNumberModels;
public BoardGridAdapter(Context context, NumberModel[] numberModels) {
mContext = context;
mNumberModels = numberModels;
}
@Override
public BoardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_board, parent, false);
BoardViewHolder viewHolder = new BoardViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(BoardViewHolder holder, int position) {
holder.bindView(mNumberModels[position]);
}
@Override
public int getItemCount() {
return mNumberModels.length;
}
public class BoardViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public BoardViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView.findViewById(R.id.boardNumber);
}
public void bindView (NumberModel numberModel) {
mTextView.setText(numberModel.getNumbers());
}
}
}
我不明白为什么这个代码不起作用
现在它在BoardFragment.java中显示了一个错误
错误:(31,49)错误:不兼容的类型:推断的类型不符合上限
推断:INT#1
上限:NumberModel[],可包裹
其中,INT#1是交叉点类型:
INT#1扩展NumberModel[],可包裹
public class NumberModel implements Parcelable {
private String mNumbers;
public NumberModel() {}
public String getNumbers() {
return mNumbers;
}
public void setNumbers(String numbers) {
mNumbers = numbers;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(mNumbers);
}
private NumberModel (Parcel in) {
mNumbers = in.readString();
}
public static final Creator<NumberModel> CREATOR = new Creator<NumberModel>() {
@Override
public NumberModel createFromParcel(Parcel parcel) {
return new NumberModel(parcel);
}
@Override
public NumberModel[] newArray(int i) {
return new NumberModel[i];
}
};
}
public class BoardNumbers {
public static String[] numbers = new String []{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"};
}