Android 如何使用带有给定json的改型2解析recyclerview上的数据
你好,我是新的改型和json。我有一个给定的json,希望在recyclerview中显示数据。我试图解析getWorkQueue()中的数据,但出现了问题 myJsonAndroid 如何使用带有给定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,
[
{
""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);