使用按钮在 RecycleView 中动态添加项目 [英] Adding Items in RecycleView Dynamically using a button

查看:19
本文介绍了使用按钮在 RecycleView 中动态添加项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个按钮(保存联系人)来保存联系人,按下该按钮时可以从编辑文本中获取姓名和电子邮件,并且应该在回收视图中动态添加 1 个列表项

I have a button(save contact) to save contacts ,the button when pressed get name and email from edit text and should dynamically add 1 list item in recycle view

保存按钮在片段中

这是我提取的名字

company_name=(EditText)view.findViewById(R.id.edittext_companyname_createMeeting);

当我点击铅时,它应该添加到现有的回收视图中

When i click on lead it should add in the existing recycleview

 leads.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

     newValueAdapter.newAddeddata(company_name.getText().toString());*/
            }
        });

回收视图已经有一个arraylist,我如何向arraylist添加新值并再次调用oncreate

The recycle view already have a arraylist,how do i add new value to the arraylist and again call oncreate

我试图提取公司名称并将其发送到该回收站视图的适配器,但它不起作用

I tried to extract company name and send it to the adapter of that recycler view but it dint work

RecyclerView 的适配器

Adapter of RecyclerView

public class NewleadsAdapter extends RecyclerView.Adapter<NewleadsAdapter.MyViewHolder> {

    Context context;
    LayoutInflater inflater;
    int positionbundle;
    ArrayList<NewleadsPOJO> datalist;
    public NewleadsAdapter(Context context, ArrayList<NewleadsPOJO> datalist,int positionbundle){

        this.context=context;
        this.datalist=datalist;
        this.positionbundle=positionbundle;

    }
   /* public NewleadsAdapter(){}*/

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=LayoutInflater.from(context).inflate(R.layout.custom_new_leads,parent,false);
        MyViewHolder myViewHolder=new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {


        holder.leads_company.setText(datalist.get(position).getLeads_company());
        holder.leads_date.setText(datalist.get(position).getLeads_date());
        holder.leads_time.setText(datalist.get(position).getLeads_time());
        if (positionbundle == 1){
          /*  holder.icon1.setVisibility(View.GONE);*/
            holder.icon1.setImageResource(R.drawable.taskcompletednewblue);
    }else{}

        Log.e("Create_meetingdate_ArrayList:", datalist.get(0).getLeads_company());   /* Arrays.deepToString(data.toArray())*/
        System.out.println(datalist.get(0).getLeads_company());
    }

    @Override
    public int getItemCount() {
        return datalist.size();
    }


    public class MyViewHolder extends RecyclerView.ViewHolder{

       TextView leads_company,leads_date,leads_time;
        ImageView icon1;
        public MyViewHolder(View itemView) {
            super(itemView);

            leads_company=(TextView)itemView.findViewById(R.id.leads_company);
            leads_date=(TextView)itemView.findViewById(R.id.leads_date);
            leads_time=(TextView)itemView.findViewById(R.id.leads_time);
             icon1=(ImageView)itemView.findViewById(R.id.leads_info);
        }
    }


    /*public void newAddeddata(String company_name){
        NewleadsPOJO newValue=new NewleadsPOJO();
        newValue.setLeads_company(company_name);
        datalist.add(datalist.size(),newValue);

    }*/
}

创建meetingfrag.java

Createmeetingfrag.java

public class CreateMeetingFrag extends Fragment {

TextView leads,cold,warm,hot,closed;
    EditText company_name,email,date,time;
    public CreateMeetingFrag() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.fragment_create_meeting, container, false);


        company_name=(EditText)view.findViewById(R.id.edittext_companyname_createMeeting);

        leads=(TextView)view.findViewById(R.id.meeting_leads);
        cold=(TextView)view.findViewById(R.id.meeting_cold);
        warm=(TextView)view.findViewById(R.id.meeting_warm);
        hot=(TextView)view.findViewById(R.id.meeting_hot);
        closed=(TextView)view.findViewById(R.id.meeting_closed);

        leads.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //getSavedValues();
               /* NewleadsAdapter newValueAdapter=new NewleadsAdapter();
                newValueAdapter.newAddeddata(company_name.getText().toString());*/

                NewleadsAdapter newValue=new NewleadsAdapter();

                newValue.newAddeddata(company_name.getText().toString());


                 setDefaultValues();
                leads.setBackgroundColor(getResources().getColor(R.color.blue));
                Toast.makeText(getActivity(),"leads clicked and saved",Toast.LENGTH_SHORT).show();
                leads.setTextColor(getResources().getColor(R.color.white));
            }
        });



        cold.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setDefaultValues();
                cold.setBackgroundColor(getResources().getColor(R.color.blue));
                Toast.makeText(getActivity(),"leads clicked",Toast.LENGTH_SHORT).show();
                cold.setTextColor(getResources().getColor(R.color.white));
            }
        });


        warm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setDefaultValues();
                warm.setBackgroundColor(getResources().getColor(R.color.blue));
                Toast.makeText(getActivity(),"leads clicked",Toast.LENGTH_SHORT).show();
                warm.setTextColor(getResources().getColor(R.color.white));
            }
        });


        hot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setDefaultValues();
                hot.setBackgroundColor(getResources().getColor(R.color.blue));
                Toast.makeText(getActivity(),"leads clicked",Toast.LENGTH_SHORT).show();
                hot.setTextColor(getResources().getColor(R.color.white));
            }
        });


        closed.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setDefaultValues();
                closed.setBackgroundColor(getResources().getColor(R.color.blue));
                Toast.makeText(getActivity(),"leads clicked",Toast.LENGTH_SHORT).show();
                closed.setTextColor(getResources().getColor(R.color.white));
            }
        });




        return view;

    }


    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    public void setDefaultValues(){

        leads.setBackgroundColor(getResources().getColor(R.color.white));
        cold.setBackgroundColor(getResources().getColor(R.color.white));
        warm.setBackgroundColor(getResources().getColor(R.color.white));
        hot.setBackgroundColor(getResources().getColor(R.color.white));
        closed.setBackgroundColor(getResources().getColor(R.color.white));
        closed.setTextColor(getResources().getColor(R.color.black_semi_transparent));
        hot.setTextColor(getResources().getColor(R.color.black_semi_transparent));
        warm.setTextColor(getResources().getColor(R.color.black_semi_transparent));
        cold.setTextColor(getResources().getColor(R.color.black_semi_transparent));
        leads.setTextColor(getResources().getColor(R.color.black_semi_transparent));
        leads.setBackground(getResources().getDrawable(R.drawable.bordder_button));
        closed.setBackground(getResources().getDrawable(R.drawable.bordder_button));
        hot.setBackground(getResources().getDrawable(R.drawable.bordder_button));
        warm.setBackground(getResources().getDrawable(R.drawable.bordder_button));
        cold.setBackground(getResources().getDrawable(R.drawable.bordder_button));
    }




}

推荐答案

将此方法添加到您的适配器并调用按钮单击.

Add this method to your adapter and call on button click.

public void newAddeddata(String company_name){
        NewleadsPOJO newValue=new NewleadsPOJO();
        newValue.setLeads_company(company_name);
        datalist.add(newValue);
        notifyDataSetChanged();
    }

将以下方法添加到 NewLeadFrag

Add following method to NewLeadFrag

public NewleadsAdapter getAdapter(){
   return adapter;
}

现在在 Createmeetingfrag

now in Createmeetingfrag

leads.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                NewLeadFrag fragment = getFragmentManager().findFragmentByTag("NewLeadFrag_TAG"); //set tag of fragment when you add with fragment manager. and if you are using support library use getSupportFragmentManager()
               if(fragment!= null){
                    fragment.getAdapter().newAddeddata(company_name.getText().toString());
                }

            }
        });

这篇关于使用按钮在 RecycleView 中动态添加项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆