如何在Android中动态添加RecyclerView中的CardView???

如何在Android中动态添加RecyclerView中的CardView???,android,android-recyclerview,Android,Android Recyclerview,我正在开发一个应用程序,其中我必须将cardView添加到 recyclerView是动态的,但它不工作 这是我的代码:- 按钮okBTN; 编辑文本输入号码; 私人回收视图mRecyclerView; 私人住宅; 公共价值; 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.corner_列表); okBTN=(按钮)findViewById(R

我正在开发一个应用程序,其中我必须将cardView添加到 recyclerView是动态的,但它不工作

这是我的代码:-

按钮okBTN;
编辑文本输入号码;
私人回收视图mRecyclerView;
私人住宅;
公共价值;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.corner_列表);
okBTN=(按钮)findViewById(R.id.okBTN);
EnterCornerNumberRet=(EditText)findViewById(R.id.EnterCornerNumberRet);
mRecyclerView=(RecyclerView)findViewById(R.id.recycler\u视图);
mRecyclerView.setHasFixedSize(true);
mLayoutManager=新的LinearLayoutManager(此);
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mllayoutmanager);
okBTN.setOnClickListener(此);
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.okBTN:
cornervalue=Integer.valueOf(enterCornerNumberRet.getText().toString().trim());
Toast.makeText(CornerListActivity.this,“+cornervalue,Toast.LENGTH_SHORT).show();
createCornerList(cornervalue);
/*if(enterCornerNumberRet.getText().toString().trim()==null){
Toast.makeText(CornerListActivity.this,“请输入角号”,Toast.LENGTH_SHORT.show();
}否则{
createCornerList(cornervalue);
}*/
打破
}
}
私有void createCornerList(int cornervalue){
对于(int i=0;i
请看一看,让我知道我在这里犯了什么错误。提前谢谢。:)


您可以检查如何使用RecyclerView。在数据发生任何更改后,您可以调用适配器的notifyDataSetChanged()来刷新视图。

在我的代码中,我在RecyclerView中设置了CardView,对于RecyclerView中的布局,我使用了StaggedGridLayoutManager

dataModel.java(模型类)

MainActivity.java

public class MainActivity extends AppCompatActivity {

RecyclerView recyclerView;
List<dataModel> list;
AdapterViewHolder adapterViewHolder;
dataModel[] dataModels;
String[] first = {"QUICK CAULIFLOWER TABBOULESH",
        "GRILLED CORN WITH MISO BUTTER"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity);
    recyclerView = (RecyclerView) findViewById(R.id.recylcerView);
    int length=first.length;
    dataModels = new dataModel[length];
    list = new ArrayList<>();
    for (int i = 0; i < length; i++) {
        dataModels[i] = new dataModel();
        dataModels[i].setFirst(first[i]);
        dataModels[i].setDescription(second[i]);
        dataModels[i].setImage(image[i]);
        list.add(dataModels[i]);
    }
    adapterViewHolder = new AdapterViewHolder(list, MainActivity.this);
    recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
    recyclerView.setAdapter(adapterViewHolder);
}
}
public类MainActivity扩展了AppCompatActivity{
回收视图回收视图;
名单;
AdapterViewHolder AdapterViewHolder;
dataModel[]数据模型;
String[]first={“快速菜花TABBOULESH”,
“味噌黄油烤玉米”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u main\u activity);
recyclerView=(recyclerView)findViewById(R.id.recylcerView);
int length=first.length;
数据模型=新数据模型[长度];
列表=新的ArrayList();
for(int i=0;i
AdapterViewer.java

public class AdapterViewHolder extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private List<dataModel> list;
private Context context;

public AdapterViewHolder(List<dataModel> list, Context context) {
    this.list = list;
    this.context = context;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout, parent, false); //inflate layout in view
    return new ViewHolder(view);  //return holder
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    ((ViewHolder) holder).textViewFirst.setText(list.get(position).getFirst());
}

@Override
public int getItemCount() {
    return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
    TextView textViewFirst;

    public ViewHolder(View itemView) {
        super(itemView);
        textViewFirst=(TextView)itemView.findViewById(R.id.textViewFirst);
    }
}
}
public类AdapterView.Adapter扩展了RecyclerView.Adapter{
私人名单;
私人语境;
公共AdapterWilder(列表、上下文){
this.list=列表;
this.context=上下文;
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.layout,parent,false);//在视图中展开布局
返回新的视图保持架(视图);//返回保持架
}
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
((ViewHolder)holder.textViewFirst.setText(list.get(position.getFirst());
}
@凌驾
public int getItemCount(){
返回list.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
TextView textViewFirst;
公共视图持有者(视图项视图){
超级(项目视图);
textViewFirst=(TextView)itemView.findViewById(R.id.textViewFirst);
}
}
}

在我的代码中,我在CardView中设置了字符串变量数组,在RecyclerView中设置了CardView之后。对于RecyclerView中的set-CardView,我使用了一个AdapterViewWholder。AdapterViewWholder类扩展了RecyclerView。Adapter and layout.xml包含CardView,其中包含一个textView。在AdapterViewWholder中,在onCreateViewHolder()中,我在onBindViewHolder()中有充气layout.xml文件和方法绑定textView中dataModel类的值。最后,在MainActivity.java中,我在RecyclerView中设置了AdapterViewWholder。

Buddy我知道如何使用RecyclerView。请注意并仔细查看我在这里提出的问题。您是否尝试在
mRecyclerView.setAdapter(mAdapter)之后添加
mAdapter.notifyDataSetChanged
用于(int i=0;i
您正在创建适配器并将其设置为recyclerView inside loop。首先这样做是错误的。永远不要初始化loop内的对象。顺便问一下,
RootCornerArrayList
有什么功能?它甚至有一些数据原因吗?如果它为null或空白,那么从
getItemCount
方法返回的大小将返回0或thrown nullPointerException.RootCornerArrayList是Bean类的一个对象,我以前在用户一个接一个地添加拐角细节时使用过它。但现在他们希望它首先创建UI,并根据计数您的适配器应该注意需要显示的项目数以及需要为eac显示的UIh项。您可以将计数或模型对象传递给
public class MainActivity extends AppCompatActivity {

RecyclerView recyclerView;
List<dataModel> list;
AdapterViewHolder adapterViewHolder;
dataModel[] dataModels;
String[] first = {"QUICK CAULIFLOWER TABBOULESH",
        "GRILLED CORN WITH MISO BUTTER"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity);
    recyclerView = (RecyclerView) findViewById(R.id.recylcerView);
    int length=first.length;
    dataModels = new dataModel[length];
    list = new ArrayList<>();
    for (int i = 0; i < length; i++) {
        dataModels[i] = new dataModel();
        dataModels[i].setFirst(first[i]);
        dataModels[i].setDescription(second[i]);
        dataModels[i].setImage(image[i]);
        list.add(dataModels[i]);
    }
    adapterViewHolder = new AdapterViewHolder(list, MainActivity.this);
    recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
    recyclerView.setAdapter(adapterViewHolder);
}
}
public class AdapterViewHolder extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private List<dataModel> list;
private Context context;

public AdapterViewHolder(List<dataModel> list, Context context) {
    this.list = list;
    this.context = context;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout, parent, false); //inflate layout in view
    return new ViewHolder(view);  //return holder
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    ((ViewHolder) holder).textViewFirst.setText(list.get(position).getFirst());
}

@Override
public int getItemCount() {
    return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
    TextView textViewFirst;

    public ViewHolder(View itemView) {
        super(itemView);
        textViewFirst=(TextView)itemView.findViewById(R.id.textViewFirst);
    }
}
}