Android 如何使用带有给定json的改型2解析recyclerview上的数据

Android 如何使用带有给定json的改型2解析recyclerview上的数据,android,json,retrofit,Android,Json,Retrofit,你好,我是新的改型和json。我有一个给定的json,希望在recyclerview中显示数据。我试图解析getWorkQueue()中的数据,但出现了问题 myJson [ { ""REQUEST_NO"": ""CR-201718-6"", ""PROCESS_NAME"": ""CONVEYANCE REIMBURSEMENT"", ""STEPNAME"": null, ""PROCESSID"": 1,

你好,我是新的改型和json。我有一个给定的json,希望在recyclerview中显示数据。我试图解析getWorkQueue()中的数据,但出现了问题

myJson

[
    {
        ""REQUEST_NO"": ""CR-201718-6"",
        ""PROCESS_NAME"": ""CONVEYANCE REIMBURSEMENT"",
        ""STEPNAME"": null,
        ""PROCESSID"": 1,
        ""INSTANCEID"": 6,
        ""AMOUNT"": 250,
        ""RAISED_BY"": ""flologic1"",
        ""RAISED_DATE"": ""12-Sep-2017"",
        ""APPROVED_BY"": ""Flologic2"",
        ""APPROVED_DATE"": null,
        ""BRANCH"": ""101""
    }
]
WorkQueueAdapter.java

公共类WorkQueueAdapter扩展了RecyclerView.Adapter{

private List<TravelWorkQueue> mDataset;
private Context context;

public WorkQueueAdapter(List<TravelWorkQueue> myDataset, Context mContext) {
    this.mDataset = myDataset;
    this.context = mContext;
}

@Override
public void onBindViewHolder(DataObjectHolder viewHolder, final int position) {

    TravelWorkQueue queue = mDataset.get(position);
    viewHolder.raisedBy.setText(queue.getRaisedBy());
    viewHolder.requestNo.setText(queue.getRequestNo());
    viewHolder.trdate.setText(queue.getRaisedDate());
    viewHolder.processName.setText(queue.getProcessName());

}

@Override
public int getItemCount() {
    return mDataset.size();
}

public static class DataObjectHolder extends RecyclerView.ViewHolder {

    TextView raisedBy, requestNo, trdate, processName;
    LinearLayout linearLayout;

    public DataObjectHolder(View itemView) {
        super(itemView);
        raisedBy = (TextView) itemView.findViewById(R.id.raisedBy);
        requestNo = (TextView) itemView.findViewById(R.id.requestNo);
        trdate = (TextView) itemView.findViewById(R.id.trDate);
        processName = (TextView) itemView.findViewById(R.id.processName);

        linearLayout = (LinearLayout) itemView.findViewById(R.id.linearIteam);
    }

}

@Override
public DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.work_queue_list, parent, false);
    return new DataObjectHolder(view);
}
私有列表mDataset;
私人语境;
公共WorkQueueAdapter(列表myDataset、上下文mContext){
this.mDataset=myDataset;
this.context=mContext;
}
@凌驾
public void onBindViewHolder(DataObjectHolder viewHolder,最终int位置){
TravelWorkQueue=mDataset.get(位置);
viewHolder.raisedBy.setText(queue.getRaisedBy());
viewHolder.requestNo.setText(queue.getRequestNo());
viewHolder.trdate.setText(queue.getRaisedDate());
viewHolder.processName.setText(queue.getProcessName());
}
@凌驾
public int getItemCount(){
返回mDataset.size();
}
公共静态类DataObjectHolder扩展了RecyclerView.ViewHolder{
TextView-raisedBy、requestNo、trdate、processName;
线性布局线性布局;
公共数据对象持有者(视图项视图){
超级(项目视图);
raisedBy=(TextView)itemView.findViewById(R.id.raisedBy);
requestNo=(TextView)itemView.findViewById(R.id.requestNo);
trdate=(TextView)itemView.findViewById(R.id.trdate);
processName=(TextView)itemView.findViewById(R.id.processName);
linearLayout=(linearLayout)itemView.findViewById(R.id.LineareAm);
}
}
@凌驾
public DataObjectHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutFlater.from(parent.getContext()).flate(R.layout.work\u queue\u list,parent,false);
返回新的DataObjectHolder(视图);
}
}

和片段类

公共类工作队列扩展片段{

public static final String TAG = WorkQueue.class.getSimpleName();
private View rootView;
private ListView myRequestList;
private RecyclerView.LayoutManager mLayoutManager;
private WorkQueueAdapter mAdapter;

private RecyclerView mRecyclerView;
String userName = "flologic2";

private TravelWorkQueue travelWorkQueue;
List<TravelWorkQueue> travelWorkQueues;

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

    //  userName = getParent().getUserName();
    mRecyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);

    mRecyclerView.setHasFixedSize(true);
    mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);
    travelWorkQueues = new ArrayList<>();
    // TravelRequestService  travelRequestService = HDFCService.getTravelRequestService();

    getWorkQueue();

    return rootView;
}

private HomeActivity getParent() {
    return (HomeActivity) getActivity();
}

private void getWorkQueue() {

    Call<List<TravelWorkQueue>> call = HDFCService.getTravelRequestService().getRequestQueqeDetails(userName);
    call.enqueue(new Callback<List<TravelWorkQueue>>() {
        @Override
        public void onResponse(Call<List<TravelWorkQueue>> call, Response<List<TravelWorkQueue>> response) {

            List<TravelWorkQueue> list = response.body();
            TravelWorkQueue workQueue = null;

            //int i=0;
           for (int i = 0; i < list.size(); i++) {
                workQueue = new TravelWorkQueue();
                String requestNo = list.get(i).getRequestNo();
                String raisedBy = list.get(i).getApproverBy();
                String raisedDate = list.get(i).getRaisedDate();
                String processName = list.get(i).getProcessName();

                workQueue.setRequestNo(requestNo);
                workQueue.setRaisedBy(raisedBy);
                workQueue.setRaisedDate(raisedDate);
                workQueue.setProcessName(processName);

                list.add(workQueue);
            i++;


                mAdapter = new WorkQueueAdapter(travelWorkQueues, getActivity());
                mRecyclerView.setAdapter(mAdapter);
            }
        }

        @Override
        public void onFailure(Call<List<TravelWorkQueue>> call, Throwable t) {

            Toast.makeText(getActivity(), "Failed", Toast.LENGTH_LONG).show();
        }
    });}}
public static final String TAG=WorkQueue.class.getSimpleName();
私有视图rootView;
私有ListView myRequestList;
private RecyclerView.LayoutManager MLLayoutManager;
私有工作队列适配器mAdapter;
私人回收视图mRecyclerView;
字符串userName=“flologic2”;
专用TravelWorkQueue TravelWorkQueue;
列出工作队列;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、Bundle savedInstanceState){
rootView=充气机。充气(R.layout.work\u队列,容器,false);
//userName=getParent().getUserName();
mRecyclerView=(RecyclerView)rootView.findviewbyd(R.id.my\u recycler\u视图);
mRecyclerView.setHasFixedSize(true);
mLayoutManager=新的LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mllayoutmanager);
travelWorkQueues=newArrayList();
//TravelRequestService TravelRequestService=HDFCService.getTravelRequestService();
getWorkQueue();
返回rootView;
}
私有HomeActivity getParent(){
return(HomeActivity)getActivity();
}
私有void getWorkQueue(){
Call Call=HDFCService.getTravelRequestService().getRequestQueqeDetails(用户名);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
List=response.body();
TravelWorkQueue workQueue=null;
//int i=0;
对于(int i=0;i
问题:

  • 不需要
    i++
    内部循环
  • 创建并设置适配器外部循环
  • travelWorkQueues没有数据,您正在将数据添加到
    列表
    中,而不是将数据添加到
    travelWorkQueues
    列表中,或者在创建适配器时使用
    列表
    引用

for(int i=0;i
问题:

  • 不需要
    i++
    内部循环
  • 创建并设置适配器外部循环
  • travelWorkQueues没有数据,您正在将数据添加到
    列表
    中,而不是将数据添加到
    travelWorkQueues
    列表中,或者在创建适配器时使用
    列表
    引用

for(int i=0;i
替换此方法。然后调用
mAdapter.notifydatasetchanged()

@覆盖
公共void onResponse(调用、响应){
List=response.body();
TravelWorkQueue workQueue=null;
//int i=0;
对于(int i=0;ifor (int i = 0; i < list.size(); i++) {
    // code
    //i++;

//    mAdapter = new WorkQueueAdapter(travelWorkQueues, getActivity());
//    mRecyclerView.setAdapter(mAdapter);
      travelWorkQueues.add(workQueue);
}
    mAdapter = new WorkQueueAdapter(travelWorkQueues, getActivity());
    mRecyclerView.setAdapter(mAdapter);
@Override
public void onResponse(Call<List<TravelWorkQueue>> call, Response<List<TravelWorkQueue>> response) {
    List<TravelWorkQueue> list = response.body();
    TravelWorkQueue workQueue = null;
    //int i=0;
    for (int i = 0; i < list.size(); i++) {
        workQueue = new TravelWorkQueue();
        String requestNo = list.get(i).getRequestNo();
        String raisedBy = list.get(i).getApproverBy();
        String raisedDate = list.get(i).getRaisedDate();
        String processName = list.get(i).getProcessName();

        workQueue.setRequestNo(requestNo);
        workQueue.setRaisedBy(raisedBy);
        workQueue.setRaisedDate(raisedDate);
        workQueue.setProcessName(processName);
        list.add(workQueue);
    } mAdapter = new WorkQueueAdapter(travelWorkQueues, getActivity());
    mRecyclerView.setAdapter(mAdapter);
}
       for (int i = 0; i < list.size(); i++) {
            workQueue = new TravelWorkQueue();
            String requestNo = list.get(i).getRequestNo();
            String raisedBy = list.get(i).getApproverBy();
            String raisedDate = list.get(i).getRaisedDate();
            String processName = list.get(i).getProcessName();

            workQueue.setRequestNo(requestNo);
            workQueue.setRaisedBy(raisedBy);
            workQueue.setRaisedDate(raisedDate);
            workQueue.setProcessName(processName);

            travelWorkQueues.add(workQueue);

               //Remove this  i++
           }
          //Call this after the for loop
          mAdapter = new WorkQueueAdapter(travelWorkQueues, getActivity()); 
          mRecyclerView.setAdapter(mAdapter);