Я не могу установить значения для моего адаптера - PullRequest
0 голосов
/ 03 сентября 2018

код Java:

public class Viewhirings extends AppCompatActivity {
ArrayList<Object> appliedmembersobj = new ArrayList<>();
ArrayList<Object> appliedmembernames = new ArrayList<>();
String curmember,existhireobj;
RecyclerView rv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_viewhirings);
    Bundle bundle = getIntent().getExtras();
    curmember = bundle.getString("obj");
    existhireobj=bundle.getString("existhire");
    rv= (RecyclerView)findViewById(R.id.rv_recycler_view);
   ParseQuery<ParseObject> query = ParseQuery.getQuery("jobs");
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {

                if (objects.size() > 0) {

                    for (ParseObject object : objects) {
                        appliedmembersobj = (ArrayList<Object>) object.getList("whoget");

                    }

                } else {

                    Toast.makeText(getApplicationContext(), "No employee found",
                            Toast.LENGTH_LONG).show();
                }
            } else {
                Log.d("awserror","left or right");
            }
        }
    });
    rv.setHasFixedSize(true);
    LinearLayoutManager llm = new LinearLayoutManager(getApplicationContext());
    rv.setLayoutManager(llm);
    for (int i=0;i<appliedmembersobj.size();i++){
        retriveinfo(String.valueOf(appliedmembersobj.get(i)));
    }

    Toast.makeText(getApplicationContext(), String.valueOf(appliedmembersobj.size()),
            Toast.LENGTH_LONG).show();

    String[] namesArray = new String[appliedmembernames.size()];
    namesArray = appliedmembernames.toArray(namesArray);
    MyAdapter adapter = new MyAdapter(namesArray);
    rv.setAdapter(adapter);
}

public void retriveinfo(String obj){

    ParseQuery<ParseObject> queryloc = ParseQuery.getQuery("jobop");
    queryloc.whereEqualTo("objectId", obj);
    queryloc.getFirstInBackground(new GetCallback<ParseObject>() {
        public void done(ParseObject object, ParseException e) {
            if (object == null) {
                Toast.makeText(getApplicationContext(), "No name found",
                        Toast.LENGTH_LONG).show();
            } else {
                        String s=object.getString("name");
                         String escape=String.valueOf(s);
                         Log.d("varudhu",escape);
                         appliedmembernames.add(escape);
            }
        }
    });


}
}

Я не могу установить значения для моего адаптера, когда я делаю отступ для адаптера, я не показываю никакого значения, но когда я записываю значения, показывающие значения, я думаю, что это из-за того, что мой метод find inbackground запущен фон, поэтому я не могу получить значения одновременно, но я не знаю альтернатив

Это мой код адаптера

открытый класс MyAdapter расширяет RecyclerView.Adapter {

private String[] mDatasetname;
private Integer[] mDatasetearnings;
private Integer[] mDatasetrat;
private Integer[] mtotaljobs;
private String[] mid;
private Float[] mrest;
public static class MyViewHolder extends RecyclerView.ViewHolder{
    public CardView mCardView;
    public TextView mTextView;
     public  TextView totaljobs;
    public  TextView rest;
    public RatingBar rate;
 public MyViewHolder(View v){
        super(v);
        mCardView = (CardView) v.findViewById(R.id.card_view);
        mTextView = (TextView) v.findViewById(R.id.tv_text);
        rate= (RatingBar) v.findViewById(R.id.tv_blah);
        totaljobs= (TextView) v.findViewById(R.id.idtotaljobs);
         rest=(TextView)v.findViewById(R.id.setrestid);

    }

}

public MyAdapter(String[] myDataset){
    mDatasetname = myDataset;
}
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_item, parent, false);
    MyViewHolder vh = new MyViewHolder(v);
    return vh;
}

@Override
public void onBindViewHolder(MyViewHolder holder, final int position){
    holder.mTextView.setText(mDatasetname[position]);
    holder.mCardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("pos", mid[position]);
            Toast.makeText(view.getContext(), mid[position],
                    Toast.LENGTH_LONG).show();
        }
    });
}

@Override
public int getItemCount() { return mDatasetname.length; }

}

1 Ответ

0 голосов
/ 03 сентября 2018

Попробуйте это

query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {

                if (objects.size() > 0) {

                    for (ParseObject object : objects) {
                        appliedmembersobj = (ArrayList<Object>) object.getList("whoget");
retriveinfo(object);
                    }

                } else {

                    Toast.makeText(getApplicationContext(), "No employee found",
                            Toast.LENGTH_LONG).show();
                }
            } else {
                Log.d("awserror","left or right");
            }
        }
    });
    rv.setHasFixedSize(true);
    LinearLayoutManager llm = new LinearLayoutManager(getApplicationContext());
    rv.setLayoutManager(llm);


    Toast.makeText(getApplicationContext(), String.valueOf(appliedmembersobj.size()),
            Toast.LENGTH_LONG).show();



public void retriveinfo(String obj){

    ParseQuery<ParseObject> queryloc = ParseQuery.getQuery("jobop");
    queryloc.whereEqualTo("objectId", obj);
    queryloc.getFirstInBackground(new GetCallback<ParseObject>() {
        public void done(ParseObject object, ParseException e) {
            if (object == null) {
                Toast.makeText(getApplicationContext(), "No name found",
                        Toast.LENGTH_LONG).show();
            } else {
                        String s=object.getString("name");
                         String escape=String.valueOf(s);
                         Log.d("varudhu",escape);
                         appliedmembernames.add(escape);
String[] namesArray = new String[appliedmembernames.size()];
        namesArray = appliedmembernames.toArray(namesArray);
        MyAdapter adapter = new MyAdapter(namesArray);
        rv.setAdapter(adapter);
            }
        }
    });


}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...