为什么拍摄的图像会不断变化?

时间:2015-11-18 16:12:05

标签: android listview

我试图将captured imagevalue从C传递到B,最后传递到listView A.当点击活动A中的列表时,它会显示传递image上的imageVieweditText B上的值。但现在问题是活动B上显示的图像不是来自我点击listview A的行。

活动A

ArrayAdapter<String> adapter;
ArrayList<String> m_listItems = new ArrayList<String>();
int mClickedPosition;
adapter=new ArrayAdapter<String (getActivity(),R.layout.claims,R.id.textView1,m_listItems);
listV = (ListView) claims.findViewById(R.id.listView1);

       listV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> listView, View view,int position, long id) 
            {
            mClickedPosition = position;
            String temp[] = m_listItems.get(position).split("\\s\\s+");
            result = temp[temp.length - 1].trim();
            result = result.replace("RM", "");
            name = temp[1].trim();
            Log.e("TAG", result + "");
            if (name.equals("Project"))
             {
                Intent intent = new Intent(Claims1.this.getActivity(), Project1.class);
                intent.putExtra("bitmap", true);
                intent.putExtra("name", name);
                intent.putExtra("result", result);
                startActivityForResult(intent, 0);
                Log.e("RESULT", "Result= " + result);
               }
             }
           });


       @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case 0:  // for Project
        result = data.getStringExtra("text"); //get from B
        name = data.getStringExtra("a");
        description = data.getStringExtra("c");
       Log.d("FIRST", "result:" + result);
       Text = "  " + name + "    " + "RM" + result + "";
       if (mClickedPosition == -1)
      { // if is icon button clicked
            m_listItems.add(Text);
       }
       else 
      {
            m_listItems.set(mClickedPosition, Text);
      }
            adapter.notifyDataSetChanged();
            listV.setAdapter(adapter);
            break;
      }
    }

活动B

     if(getIntent().getExtras()!=null) { //if  has value pass from A
                final String Amount = getIntent().getExtras().getString("result");
                final String description1 = getIntent().getExtras().getString("description");
                txt1.setText(description1);
                txt.setText(Amount);
            }

                    b.setOnClickListener(new View.OnClickListener() {  // return to A
                        public void onClick(View arg0) {
                            Intent returnIntent = new Intent();
                            a = "Project";
                            text = txt.getText().toString(); // amount
                            returnIntent.putExtra("text", text);
                            returnIntent.putExtra("a", a);
                            returnIntent.putExtra("c", c); // receive from Activity C
                            setResult(Activity.RESULT_OK, returnIntent);
                           finish();
                        }
                    });
                           viewImage.setImageBitmap(Global.img); // image receive from C
                      } 

 public void onActivityResult(int requestCode,int resultCode, Intent data)
    {  //receive from C
        if(requestCode==PROJECT_REQUEST_CODE) {
            if(data!=null&&data.hasExtra("text")) {
                c = data.getStringExtra("text");
                txt1.setText(c);
                viewImage.setImageBitmap(Global.img); //display image 
            }
}
        else if (requestCode==CAMERA_REQUEST_CODE)
        {
        }
    }

活动C

ImageView b; 
 ok.setOnClickListener(new View.OnClickListener()
        {   // return image to B
            public void onClick(View arg0)
            {
                Intent returnIntent=new Intent();
                text=t.getText().toString();
                b.setDrawingCacheEnabled(true);
                b.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
                        View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
                b.layout(0, 0, b.getMeasuredWidth(), b.getMeasuredHeight());
                b.buildDrawingCache(true);
                returnIntent.putExtra("text", text);
                if (b.getDrawingCache() != null) {
                    Bitmap bitmap = Bitmap.createBitmap(b.getDrawingCache());
                    if (bitmap == null) {
                        Log.e("TAG", "getDrawingCache() == null");
                    }
                    Global.img = bitmap;
                }
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
            }
        });
    }

将图片添加到数据库

如果点击活动A 中的确定button,我希望将所有图片保存到database

 button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                     byte[] data=getBitmapAsByteArray(getActivity(),Global.img);// this is a function
                     SB.insertStaffBenefit(data);
                    }
                }


            }

  public static byte[] getBitmapAsByteArray(final Context context,Bitmap bitmap) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
        Toast.makeText(context, outputStream.size()/1024+"KB", Toast.LENGTH_LONG).show();
        return outputStream.toByteArray();
    }

1ListView in A。价值观从C和B得到。

2Activity B。假设单击列表并且意图指向B.注意,值和图像来自活动C和B.

3New value and images added and return to A

4Two list in Activity A now

5When first list clicked, image changed

1 个答案:

答案 0 :(得分:2)

您可以添加位图数组列表(在您的活动A中):

ArrayList<Bitmap> m_listBitmapItems = new ArrayList<Bitmap>();

在你的listV的onItemClick中:

Global.img = m_listBitmapItems.get(position);
onActivityResult()中的

if (mClickedPosition == -1)
{ // if is icon button clicked
    m_listItems.add(Text);
    m_listBitmapItems.add(Global.img);
}
else
{
    m_listItems.set(mClickedPosition, Text);
    m_listBitmapItems.set(mClickedPosition, Global.img);
}