问题描述
嗨,在下面的代码中,我尝试过的是实现表布局,因为它包含来自服务器的动态表行,该行来自服务器解析数据并以表格式显示
这是我为其实施的输出。动态表布局包含动态数据
现在,在我上面的屏幕截图中,如果用户单击该视图以显示来自服务器的文件,则最后一行包含一个名为视图的视图。
任何人都可以帮助我解决此问题
来自服务器的响应:
{
"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创建一个新过程。 下面的步骤。
- 创建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();
}
}
- 现在将图像URL或ID传递到标签
.settag()
属性中。 - 并使用上面给定的
.setOnClickListener(lblClick);
设置onclick监听器。在该侦听器方法中,您将收到ID或图像URL。无论您传入标签属性如何。