0

インテントチューザーで画像を選択するたびに、カスタムリストビューに画像を入れたいです。ここまで来ました...

    public class ItemListBaseAdapter extends BaseAdapter {
private static ArrayList<ItemDetails> itemDetailsrrayList;
private static ArrayList<Uri> imagesUri;



private LayoutInflater l_Inflater;

   public ItemListBaseAdapter(Context context, ArrayList<ItemDetails> results,  ArrayList<Uri> uri) {
    itemDetailsrrayList = results;
    imagesUri = uri;
    l_Inflater = LayoutInflater.from(context);

}



public int getCount() {
    return itemDetailsrrayList.size();
}

public Object getItem(int position) {
    return itemDetailsrrayList.get(position);

}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.item_details_view, null);
        holder = new ViewHolder();
        holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
        holder.txt_itemDescription = (TextView) convertView.findViewById(R.id.itemDescription);
        holder.txt_itemPrice = (TextView) convertView.findViewById(R.id.price);
        holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    ArrayList<Uri> lastimageUri = itemDetailsrrayList.get(position).getUriImage();

    itemDetailsrrayList.get(position).setUriImage(lastimageUri.get(lastimageUri.size() - 1));
    holder.itemImage.setImageURI(itemDetailsrrayList.get(position).getImage());




    return convertView;
}

これは私のアクティビティです。私が arraylist に追加した Uri が複製されているようです。

public class ListViewImagesActivity extends Activity {
Button btn_GetPhotos;
private String selectedImagePath;
public Uri imageUri;
ArrayList<Uri> imageUris = new ArrayList<Uri>();
ArrayList<ItemDetails> results = new ArrayList<ItemDetails>();



ItemDetails item_details = new ItemDetails();
private final static int SELECT_PICTURE = 1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btn_GetPhotos = (Button)findViewById(R.id.btn_GetPhotos);
    btn_GetPhotos.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("image/*");
            startActivityForResult(Intent.createChooser(intent, "Select Photos"), SELECT_PICTURE);


        }
    });


}


private ArrayList<ItemDetails> GetSearchResults(){


    item_details.setUriImage(ImageListUri());
    results.add(item_details);




    return results;
}

public ArrayList<Uri> ImageListUri(){

    imageUris.add(imageUri);
    return imageUris;

}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE ) {
            imageUri = data.getData();
            ArrayList<ItemDetails> image_details = GetSearchResults();

            //ArrayList<Uri> resultImageUri = ImageListUri();

            ItemListBaseAdapter uriItem = new ItemListBaseAdapter(ListViewImagesActivity.this, image_details);
            final ListView lv1 = (ListView) findViewById(R.id.listV_main);
            lv1.setAdapter(uriItem);


        }
    }
}

}

しかし、画像を選択するたびに、現在の画像が表示され、選択した前の画像が置き換えられます。したがって、画像 4x を選択すると、最後に選択した画像がリスト ビュー 4x に表示されます。最新の画像だけでなく、選択したすべての画像を表示したい。

4

1 に答える 1

0

問題の原因は

item_details.setUriImage(ImageListUri()); results.add(item_details);

関数でGetSearchResults()

GetSearchResults()が呼び出されるたびitem_detailsに、最後に選択した画像に変更されます。のコピーではなくresults.add(item_details);の参照を追加することに注意してください。item_detailsitem_details

于 2013-06-26T08:26:54.417 に答える