BijoyJoseph Ответов: 0

Recyclerview с JSON синтаксическим анализом android


Я работаю над проектом, в котором мне нужно разобрать массив JSON и показать значения в RecyclerView. Проблема в том, что я не могу показать форму данных JSON в RecyclerView.

Вот мой класс активности:

<blockquote class="quote"><div class="op">Quote:</div>public class ClientListActivity extends AppCompatActivity {

    private String groupId;
    private String clientId;
    private String clientName;
    private RecyclerView recyclerView;
    private List<ClientListData> clientListData = new ArrayList<>();
    private ClientListAdapter mClientListAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_client_list);
        recyclerView = (RecyclerView) findViewById(R.id.rv_client_list);


        if(getIntent() != null) {

            Bundle bundle = getIntent().getExtras();
            try {

                JSONObject jsonClientListObject = new JSONObject(getIntent().getStringExtra("clientList"));
                //JSONArray clientArray = jsonClientListObject.getJSONArray("activeClients");

                JSONArray clientArray = jsonClientListObject.optJSONArray("activeClients");

                for(int i = 0 ; i < clientArray.length(); i++) {
                    ClientListData clientListData = new ClientListData();
                    clientListData.setClientId(clientArray.getJSONObject(i).getString("id"));
                    clientListData.setClientName(clientArray.getJSONObject(i).getString("name"));

                    clientId = clientListData.getClientId();
                    clientName = clientListData.getClientName();
                }
                //String activeClients = jsonClientListObject.getJSONArray("activeClients").toString();

                groupId = bundle.getString("groupId");

                mClientListAdapter = new ClientListAdapter(R.layout.client_list_item, clientListData);
                RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
                recyclerView.setLayoutManager(mLayoutManager);
                recyclerView.setAdapter(mClientListAdapter);

                Log.e("Client List ********", jsonClientListObject.toString() + " group Id: " + groupId);
                Log.e("client id: " + clientId, "client name: " + clientName);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
}</blockquote>


а вот мой адаптер и класс модели:

<blockquote class="quote"><div class="op">Quote:</div>public class ClientListAdapter extends RecyclerView.Adapter<ClientListAdapter.ViewHolder> {

    private int listItemLayout;
    private List<ClientListData> clientArrayList;

    public ClientListAdapter(int layoutId, List<ClientListData> clientArrayList) {
        this.listItemLayout = layoutId;
        this.clientArrayList = clientArrayList;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(listItemLayout, parent, false);
        ViewHolder myViewHolder = new ViewHolder(view);

        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(ClientListAdapter.ViewHolder holder, int position) {

        TextView clients = holder.clientList;
        clients.setText(clientArrayList.get(position).getClientName());

    }

    @Override
    public int getItemCount() {
        return clientArrayList == null ? 0:clientArrayList.size();
    }

    static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public TextView clientList;
        private final Context context;

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

            context = itemView.getContext();
            itemView.setOnClickListener(this);

            clientList = (TextView) itemView.findViewById(R.id.tv_client_list);
        }

        @Override
        public void onClick(View v) {

        }
    }
}</blockquote>


класс моделей:

public class ClientListData {

    String clientId;
    String clientName;

    public String getClientId() {
        return clientId;
    }

    public void setClientId(String clientId) {
        this.clientId = clientId;
    }

    public String getClientName() {
        return clientName;
    }

    public void setClientName(String clientName) {
        this.clientName = clientName;
    }
}


Я хотел бы знать, что я здесь делаю не так.

Что я уже пробовал:

Я перепробовал много вещей, но я совершенно новичок в разработке Android, и я не знаю, где я делаю неправильно

David Crow

Я вижу несколько примеров clientListData. Один принадлежит ClientListActivity. Другой является локальным для for() петля. Это намеренно?

0 Ответов