我需要从我的Web服务到recyclerview显示一些细节,但它不起作用

时间:2015-10-14 08:17:10

标签: android android-recyclerview android-cardview

这是我的Fragment类,在这里我无法创建Person类的实例。尝试创建Person类的实例时,显示错误,因为Person中的Person(String,String)不能应用于零。

           public class MainActivityFragment extends Fragment {
           private final List<Person> mPersonList = new ArrayList<>();
           public MainActivityFragment() {
           }

           @Override
           public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                    Bundle savedInstanceState) {
               View view = inflater.inflate(R.layout.fragment_main, container, false);

               Context context = getActivity();


               RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
               recyclerView.setHasFixedSize(true);

               LinearLayoutManager layoutManager = new LinearLayoutManager(context);
               recyclerView.setLayoutManager(layoutManager);

               final RVAdapter rvAdapter = new RVAdapter(mPersonList);
               recyclerView.setAdapter(rvAdapter);

               RequestQueue requestQueue = Volley.newRequestQueue(context);
               String url = "http://192.16.1.100/api/persons";

               JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
                   @Override
                   public void onResponse(JSONArray response) {
                       try {


                               for (int i = 0; i < response.length(); i++) {
                                   JSONObject jsonObject = response.getJSONObject(i);

                                    Person person=new Person();

                                   person.phone_name = jsonObject.getString("name");


                                   person.phone_price = jsonObject.getString("dddd");

                                   mPersonList.add(i, person);
                               }
                               rvAdapter.notifyDataSetChanged();

                       } catch (JSONException e) {
                           e.printStackTrace();
                       }
                   }
               }, new Response.ErrorListener() {
                   @Override
                   public void onErrorResponse(VolleyError error) {
                       Log.e("VOLLEY", error.toString());
                   }
               });

               requestQueue.add(jsonArrayRequest);


               return view;
           } }

我的人类

     class Person {
     public String phone_name;
     public String phone_price;

    Person(String phone_name, String phone_price) {
        this.phone_name = phone_name;
        this.phone_price = phone_price;

    } }

我的适配器类是

       public class RVAdapter extends
      RecyclerView.Adapter<RVAdapter.PersonViewHolder> {
    List<Person> persons;

    RVAdapter(List<Person> persons) {
        this.persons = persons;
    }

    @Override
    public PersonViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview,
parent, false);
        PersonViewHolder pvh = new PersonViewHolder(v);
        return pvh;
    }

    @Override
    public void onBindViewHolder(PersonViewHolder holder, int position) {
        holder.phoneName.setText(persons.get(position).phone_name);
        holder.phonePrice.setText(persons.get(position).phone_price);
    }

    @Override
    public int getItemCount() {
        if (persons != null) {
            return persons.size();
        }
        return 0;
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

    public static class PersonViewHolder extends RecyclerView.ViewHolder {
        CardView cv;
        TextView phoneName;
        TextView phonePrice;

        PersonViewHolder(View itemView) {
            super(itemView);
            cv = (CardView) itemView.findViewById(R.id.card_view);
            phoneName = (TextView) itemView.findViewById(R.id.phone_name);
            phonePrice = (TextView) itemView.findViewById(R.id.phone_price);
        }
    } }

1 个答案:

答案 0 :(得分:0)

请尝试更改以下内容

String phone_name = jsonObject.getString("name"
String phone_price = jsonObject.getString("dddd");
Person person=new Person(phone_name,phone_price);