获取RecyclerView中的元素id并将其作为JSON对象添加到onClick()上,如果onClick()= false则删除JSON对象

时间:2017-08-30 07:31:09

标签: java android json

我正在实施一个联系人应用程序,我制作了一个RecyclerView,并显示了我从API中获取的所有联系人。现在,当我选择一个项目时,它的id(作为JSON对象)应该添加到JOSN数组中,如果我取消选择该项目,那么应该从数组中删除该JSON对象。我能够将ID添加到数组,但是当我选择多个项目时,我无法将下一个对象附加到JSON数组。同样,当我取消选择一个项目时,该对象应该从数组中删除。

这是我的适配器类:

public class ClientListAdapter extends RecyclerView.Adapter<ClientListAdapter.ViewHolder> {

private Context context;
private List<ClientListData> clientListData;
public JSONArray clientArray = new JSONArray();
//public  JSONObject clientObject = new JSONObject();

public ClientListAdapter(List<ClientListData> clientListData, Context context) {
    super();

    this.clientListData = clientListData;
    this.context = context;
}

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

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.client_list_item, parent, false);
    ViewHolder viewHolder = new ViewHolder(view);

    return viewHolder;
}

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

    final ClientListData clientListDataModel = clientListData.get(position);
    holder.clientList.setText(clientListDataModel.getClientName());

    holder.itemView.setBackgroundColor(clientListDataModel.isSelected() ? Color.GRAY : Color.WHITE);
    holder.clientList.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            clientListDataModel.setSelected(!clientListDataModel.isSelected());
            //holder.itemView.setBackgroundColor(clientListDataModel.isSelected() ? Color.GRAY : Color.WHITE);


            //JSONObject clientObject = new JSONObject();
            //JSONObject combinedClientList = new JSONObject();

            try {
                    JSONObject clientObject = new JSONObject();
                    if(clientListDataModel.isSelected()) {
                        holder.itemView.setBackgroundColor(Color.GRAY);
                        clientObject.put("id", clientListData.get(position).getClientId());
                        clientArray.put(clientObject);

                if(!clientListDataModel.isSelected()) {

                    holder.itemView.setBackgroundColor(Color.WHITE);

                    for(int i=0; i<clientArray.length(); i++) {
                        clientObject = clientArray.getJSONObject(i);
                        clientObject.remove(clientListData.get(position).getClientId());
                    }
                }

                //clientArray.put(clientObject);

            } catch (JSONException e) {
                e.printStackTrace();
            }



            Log.e("client id array", ""+clientArray);

        }
    });
}

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

class ViewHolder extends RecyclerView.ViewHolder {

    public TextView clientList;

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

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

    }
}

}

正如您所看到的......我正在通过我的List运行循环并将Id添加到JsonObject。但是,我无法追加下一个选定的项目。

0 个答案:

没有答案