将数据传输到单独的ArrayList并显示在RecyclerView

时间:2017-11-08 11:25:30

标签: android arraylist android-recyclerview

我有两个 ArrayLists 我试图将数据插入到另一个类中的单独的静态ArrayList中并显示在 RecyclerView 中,但是回收器没有填充,但是使用虚拟ArrayList也是如此。
请帮我解决这个问题。

我的类,我将phoneContactNos和phoneContactName中的数据插入两个单独的ArrayList:Common.selectedContactNos和Common.selectedContactName。

    public void displayMatchedContacts()
{
    try {
        for (int i = 1; i < phoneContactNos.size(); i++) {
            if (phoneContactNos.contains(registeredContactNos.get(i))) {
                if (registeredContactNos.get(i) != null) {
                    try {
                        indexOfRegNumber = phoneContactNos.indexOf(registeredContactNos.get(i));
                        //Common.indexPosition_contacts=indexOfRegNumber;
                        Toast.makeText(this, "index" + String.valueOf(indexOfRegNumber), Toast.LENGTH_LONG).show();
                        if ((phoneContactNos.get(indexOfRegNumber) != null) &&(phoneContactName.get(indexOfRegNumber) != null)) {

                            //String regName="";
                            //String regContact="";
                            Common.selectedContactNos.add(phoneContactNos.get(indexOfRegNumber));
                            //Toast.makeText(this,selectedContactNos.get(i).toString(),Toast.LENGTH_SHORT).show();
                            //Toast.makeText(this,phoneContactNos.get(indexOfRegNumber).toString(),Toast.LENGTH_SHORT).show();
                            Common.selectedContactName.add(phoneContactName.get(indexOfRegNumber));
                            //Toast.makeText(this,selectedContactName.get(i).toString(),Toast.LENGTH_SHORT).show();
                            //Toast.makeText(this, phoneContactName.get(indexOfRegNumber).toString(), Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(this, "null index no", Toast.LENGTH_SHORT).show();
                        }
                    } catch (Exception e) {
                        Log.i("Contacts display error", e.getLocalizedMessage());
                        e.printStackTrace();
                    }

                }
            }

        }



    }catch (Exception e)
    {
        Log.i("Contacts error in loop", e.getLocalizedMessage());
        e.printStackTrace();
    }


}

我的公共课

public final  class Common {
public static ArrayList<String> selectedContactNos=new ArrayList<>();
public static ArrayList<String> selectedContactName=new ArrayList<>();
public  static String fcmId="";
public static int position;
public  static String contacts_list="";
public static int indexPosition_contacts;

}

我的RecyclerView填充代码

   public void populateList() {
  Log.i("Populate List","Entered");
    LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(this);
    recyclerView_contacts.setLayoutManager(mLinearLayoutManager);
    displayRecyclerAdapter = new DisplayRecyclerAdapter(this);
    recyclerView_contacts.setAdapter(displayRecyclerAdapter);
}

我的适配器类

public class DisplayRecyclerAdapter extends RecyclerView.Adapter<DisplayRecyclerAdapter.displayViewHolder> {
private LayoutInflater mInflater;
private Context context;
Fragment fragment;
FragmentTransaction ft;
FrameLayout container;
public DisplayContacts displayContacts;



public DisplayRecyclerAdapter(Context context) {
    this.mInflater = LayoutInflater.from(context);
    this.context = context;
    ft = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
    //displayContacts = new DisplayContacts();
}

@Override
public displayViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = mInflater.inflate(R.layout.contacts_row, parent, false);
    displayViewHolder holder = new displayViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(displayViewHolder holder, int position) {
    holder.setData(position);
    //Common.position = position;
    holder.setListeners();
    //for(int i=0;i<((DisplayContacts)context).selectedContactName.size();i++)
        for(int i=0;i<Common.selectedContactName.size();i++)
    {
        //String contactName=((DisplayContacts)context).selectedContactName.get(i);
        String contactName=Common.selectedContactName.get(i);
        //String contactNumber=((DisplayContacts)context).selectedContactNos.get(i);
        String contactNumber=Common.selectedContactNos.get(i);
        Toast.makeText(context,contactName+","+contactNumber,Toast.LENGTH_SHORT).show();
    }
}


class displayViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    int position;
    //ImageView productSearchImg;
    TextView name_contactList;
    Button call_contact;

    public displayViewHolder(View itemView) {
        super(itemView);

        name_contactList = (TextView) itemView.findViewById(R.id.contactlist_name);
        call_contact = (Button) itemView.findViewById(R.id.contactlist_call);

    }

    public void setData(int position) {
        this.position = position;
        //String displayContacts=((DisplayContacts) context).selectedContactName.get(position);
        String displayContacts=Common.selectedContactName.get(position);
        Toast.makeText(context,"name to display"+ displayContacts,Toast.LENGTH_SHORT).show();
        //name_contactList.setText(((DisplayContacts) context).selectedContactName.get(position));
        //name_contactList.setText(displayContacts);
        name_contactList.setText("dummy text");
    }

    @Override
    public void onClick(View v) {
        //sendPushNotification();
        startAudioCall();
    }


    public void setListeners() {
        call_contact.setOnClickListener(displayViewHolder.this);
    }
}

public void startAudioCall() {
    Intent i = new Intent(context, AudioCallActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
}

@Override
public int getItemCount() {
    return ((DisplayContacts) context).selectedContactName.size();
}

}

1 个答案:

答案 0 :(得分:0)

可以是两件事之一: 1.你没有附加数据适配器,因此是空的 2.或者您正在更新数据但未调用notifyDataSetChanged()

在创建时尝试传递Adapter类中的列表数据,然后将其附加到recyelerview。

    //to give a vary basic example

        List dataList;
        RvAdapter(Context c,List data){
    this.dataList=data;
        }

        onBidViewHolder(Viewholder holder,int position){
        holder.tvName.setText(dataList.get(position).getName());
    .......
        }

    //in your activity/fragment

    RvAdapter adapter=new RavAdapter(context,dataList);
    recylerview.setAdapter(adapter);
//if you change your data 
adapter.notifyDataSetChanged()