在行项目上单击列表器以在Android中进行表格布局

问题描述

嗨,在下面的代码中,我尝试过的是实现表布局,因为它包含来自服务器的动态表行,该行来自服务器解析数据并以表格式显示

这是我为其实施的输出。动态表布局包含动态数据

Dynamic table layout contains dynamic data

现在,在我上面的屏幕截图中,如果用户单击该视图以显示来自服务器的文件,则最后一行包含一个名为视图的视图。

任何人都可以帮助我解决此问题

来自服务器的响应:

{
    "success": true,"result": {
        "pan": {
            "id": "52728","filename": "PAN.jpg","path": "storage/2020/January/week3/52728_PAN.jpg"
        },"adhar": {
            "id": "52730","filename": "AADHAR.jpg","path": "storage/2020/January/week3/52730_AADHAR.jpg"
        },"gst": {
            "id": "52732","filename": "GST.jpg","path": "storage/2020/January/week3/52732_GST.jpg"
        },"purchase_order": {
            "id": "52734","filename": "PO1.jpg","path": "storage/2020/January/week3/52734_PO1.jpg"
        },"checque": {
            "id": "52736","filename": "ADV.jpg","path": "storage/2020/January/week3/52736_ADV.jpg"
        },"doc_one": {
            "id": "53160","filename": "docone.PNG","path": "storage/2020/July/week1/53160_docone.PNG"
        },"doc_two": {
            "id": "52740","filename": "PO3.jpg","path": "storage/2020/January/week3/52740_PO3.jpg"
        }
    }
}

MainActivity.java:

       final APIService service = RetroClass.getRetrofitInstance().create(APIService.class);
        /** Call the method with parameter in the interface to get the notice data*/
        Call<DocumentModel> call = service.GetDocumentList(operation,sessionId,module,record);
        /**Log the URL called*/
        Log.i("URL Called",call.request().url() + "");
        call.enqueue(new Callback<DocumentModel>() {
            @Override
            public void onResponse(Call<DocumentModel> call,Response<DocumentModel> response) {
                Log.e("response",new Gson().toJson(response.body()));
                if (response.isSuccessful()) {
                    Log.e("response",new Gson().toJson(response.body()));
                    DocumentModel documentModel = response.body();
                    // Gson g = new Gson();
                    //String jsonAllDocuments = g.toJson(documentModel);
                    //  tinyDB.putString("jsonAllDocuments",jsonAllDocuments);
                    String success = documentModel.getSuccess();
                    if (success.equals("true")) {
                        ClosedwonResults closedwonResults = documentModel.getResult();
                        panModel = closedwonResults.getPan();
                        id = panModel.getId();
                        Log.d("docid",id);
                        filename = panModel.getFilename();
                        Log.d("filename",filename);
                        path = panModel.getPath();
                        Log.d("path",path);

                        GSTModel gstModel=closedwonResults.getGst();
                            gstId = gstModel.getId();
                            gstFilename=gstModel.getFilename();
                            gstpath=gstModel.getPath();
                            Purchase_orderModel purchase_orderModel=closedwonResults.getPurchase_order();
                        purchaseId=purchase_orderModel.getId();
                        purchaseFilename=purchase_orderModel.getFilename();
                        purchasePath=purchase_orderModel.getPath();

                        AdharModel adharModel=closedwonResults.getAdhar();
                        adharId=adharModel.getId();
                        adharFilename=adharModel.getFilename();
                        adharPath=adharModel.getPath();


                        ChecqueModel checqueModel=closedwonResults.getChecque();
                        checqueId=checqueModel.getId();
                        checqueFilename=checqueModel.getFilename();
                        checquepath=checqueModel.getPath();

                        Doc_oneModel doc_oneModel = closedwonResults.getDoc_one();
                        doc_oneid = doc_oneModel.getId();
                        Log.d("doc_oneid",doc_oneid);
                        doc_onefilename = doc_oneModel.getFilename();
                        Log.d("doc_onefilename",doc_onefilename);
                        doc_onepath = doc_oneModel.getPath();
                        Log.d("doc_onepath",doc_onepath);
                        Doc_twoModel doc_twoModel = closedwonResults.getDoc_two();
                        doc_twoid = doc_twoModel.getId();
                        Log.d("doc_twoid",doc_twoid);
                        doc_twofilename = doc_twoModel.getFilename();
                        Log.d("doc_twofilename",doc_twofilename);
                        doc_twopath = doc_twoModel.getPath();
                        Log.d("doc_twopath",doc_twopath);
                        docModel = new DocModel(filename,adharFilename,gstFilename,purchaseFilename,checqueFilename,doc_onefilename,doc_twofilename,path,adharPath,gstpath,checquepath,purchasePath,doc_onepath,doc_twopath);
                        closedwonList.add(docModel);



                    }
                  //  DocModel docModel1=closedwonList.get(position);
                    documentIDS = docModel.getFilename() + "," + docModel.getDoc_onefilename() + "," + docModel.getDoc_twofilename() + "," +
                            docModel.getAdharfilename() + "," + docModel.getChecquefilename() + "," + docModel.getGstfilename() + "," + docModel.getPurchasefilename();
                    Paths=docModel.getPath()+","+docModel.getGstpath()+","+docModel.getChecquepath()+","+
                            docModel.getAdharpath()+","+docModel.getPurchasepath()+","+docModel.getDoc_onepath()+","+docModel.getDoctwopath();



                    String[] stringArray2 = {"PAN","AADHAR","GST","PURCHASE ORDER","CHECQUE","dOC ONE","DOC TWO"};
                    TableRow tbrowdoc = new TableRow(getContext());
                    Resources resourcedoc = getContext().getResources();
                    tbrowdoc.setLayoutParams(getLayoutParams());
                    tbrowdoc.addView(getTextView(0,"Title",Color.WHITE,resourcedoc.getColor(R.color.tabs1)));
                    tbrowdoc.addView(getTextView(0,"File Name","View/Download",resourcedoc.getColor(R.color.tabs1)));
                    documents.addView(tbrowdoc,getLayoutParams());

                    String[] IDSList = documentIDS.split(",");
                    String[] PathList=Paths.split(",");//path list
                   url="XXXXXXX".concat(String.valueOf(PathList));

                    int arrayDoc = stringArray2.length;
                    TextView tv=new TextView(getContext());
                    tv.setLayoutParams(getLayoutParams());
                    tv.setText(url);
                    tv.setTag(url);

                    tv.setMovementMethod(LinkMovementMethod.getInstance());
                    for (int i = 0; i < arrayDoc; i++) {

                        final TableRow tbrowdocdetails = new TableRow(getContext());
                        tbrowdocdetails.setLayoutParams(getLayoutParams());

                        tbrowdocdetails.addView(getTextView(i + arrayDoc,stringArray2[i],Color.BLACK,ContextCompat.getColor(getContext(),R.color.back_blue)));
                        tbrowdocdetails.addView(getTextView(i + arrayDoc,IDSList[i],R.color.back_blue)));
                        tbrowdocdetails.addView(getTextView1(i + arrayDoc,"View",R.color.back_blue)));


                        documents.addView(tbrowdocdetails);
                    }
                }
                else{
                    Toast.makeText(getContext(),"Something went wrong",Toast.LENGTH_LONG).show();
                }
            }
            @Override
            public void onFailure(Call<DocumentModel> call,Throwable t) {
                Log.d("error",t.getMessage());
            }
        });

private TextView getTextView1(int id,final String title,int color,int bgColor) {
        lblClick = new TextView(getContext());
        lblClick.setId(id);
        lblClick.setText(title.toLowerCase());
        lblClick.setTextColor(color);
        lblClick.setGravity(Gravity.CENTER);
        lblClick.setPadding(10,10,10);
        lblClick.setBackgroundColor(bgColor);
        lblClick.setTag(url);
        lblClick.setLayoutParams(getLayoutParams());
        lblClick.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                v.getTag().toString();
                Toast.makeText(getContext(),url,Toast.LENGTH_LONG).show();
            }
        });


        return lblClick;
    }

解决方法

您必须为上一个textview创建一个新过程。 下面的步骤。

  1. 创建TextView的onclick侦听器。如下。
TextView.OnClickListener lblClick = new View.OnClickListener(){
    @Override
        public void onClick(View v) {
            // Get ID of that row or pass image name in tag property.
            v.getTag().toString();
        }
}
  1. 现在将图像URL或ID传递到标签.settag()属性中。
  2. 并使用上面给定的.setOnClickListener(lblClick);设置onclick监听器。在该侦听器方法中,您将收到ID或图像URL。无论您传入标签属性如何。