我有EditText和Button,我可以在EditText中输入我想要在我的应用上显示多少个ImageView的数字。比方说,我写3然后它将在布局上显示3个ImageViews,它工作得很好。
我成功拍摄并在那些ImageView上显示。
container.removeAllViews();
for (int i = 1; i <= no; i++) {
final View addView = layoutInflater.inflate(R.layout.shelter_row, null);
txtV1 = (TextView) addView.findViewById(R.id.txtV1);
txtV1.setText(String.valueOf(i));
addView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
imgLantai = (ImageView)view.findViewById(R.id.imgLantai);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,CAMERA_10);
}
});
container.addView(addView);
}
我尝试获取位图并在ImageView上显示它。它的工作原理
if(requestCode == CAMERA_10){
if(resultCode == RESULT_OK){
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream output = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
byte[] byte_arr = output.toByteArray();
mbitmap10 = Base64.encodeToString(byte_arr, Base64.DEFAULT);
imgLantai.setImageBitmap(bitmap);
}else if(resultCode == RESULT_CANCELED){
}
}
通过使用提交按钮,我尝试使用POST
将位图插入数据库public void insertFoto(){
final String URL = "http://www.lineitopkal.com/genset/insert_site.php";
final ProgressDialog loading = ProgressDialog.show(this,"Uploading...","Please wait...",false,false);
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.contains("success")) {
loading.dismiss();
Toast.makeText(getApplicationContext(),mbitmap01,Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
loading.dismiss();
Toast.makeText(getApplicationContext(),"Data gagal disimpan",Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<String, String>();
params.put("lantai",mbitmap10);
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueue rq = Volley.newRequestQueue(this);
rq.add(stringRequest);
}
我似乎无法使用POST将所有图像(mbitmap10一个)存储在数据库中。仅存储了最新图像。我应该使用数组来存储图像吗?如果是这样,我该如何实现它?或者还有其他方式?
答案 0 :(得分:1)
注意:这是一般伪代码,用于演示概念并回答一般性问题
1)在您的应用中放置一个空数组的位图:
Bitmap [] allBitmaps = new Bitmap [];
2)每次将新图像分配给其中一个图像视图时,将其添加到与图像视图对应的位置的数组中 - allBitmaps [2] = imageView2.getBitmap ...
3)然后,当用户点击提交时,执行以下操作:
@Override
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<String, String>();
// int paramNumber = 0;
// for (bitmap : allBitmaps) {
// params.put"paramNumber.toString()",bitmap);
// paramNumber ++;
// }
return params;
}