1

私のアプリは、グリッドビューの画像をクリックしてビューページャーに表示します。私のデータベースには 2 つのテーブルがあります。tbl_cafe と tbl_pictures。tbl_cafe には id,title,desc が格納され、tbl_picture には cafe_id と pictures が格納されています。

ImagePagerActivitytbl_pictures を照会して に保存しました<ArrayList<HashMap<String, Object>>。ImagePagerActivity には Universal Image Loader ライブラリを使用しましたViewpager。ViewpagerActivity で、画像名を照会し、画像をダウンロードするための URL と連結しました。この時点で、データベース内のすべての画像が表示されます。

ビューページャーに同じIDのみを表示するのに固執する別のテーブルを使用しています。

私が欲しいのは、ビューTopActivityページャーで画像を表示した後、同じIDを持つ画像のみをグリッドビューでクリックすることです。

トップアクティビティ

gridView1.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position,
                long id) {
            Intent i = new Intent(TopActivity.this, ImagePagerActivity.class);
            i.putExtra(CafeDbOpenHelper.CAFE_ID, position);
            i.putExtra(CafeDbOpenHelper.CAFE_TITLE, position);
            i.putExtra(CafeDbOpenHelper.CAFE_ADDRESS, position);
            i.putExtra(CafeDbOpenHelper.CAFE_DESCRIPTION, position);
            startActivity(i);
        }
    });

tbl_cafe & tbl_pictures

ここに画像の説明を入力

ImagePagerActivity の完全なImagePagerActivity

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ac_image_pager);

    dataSource = new CafeDataSource(this);
    dataSource.open();
    arrCursor = dataSource.getArrCursor();
    arrCursorPicture = dataSource.getArrCursorPicture();
    pagerPosition  = arrCursorPicture.size();

    ImageLoader.getInstance().init(config);

    if(savedInstanceState != null){
        position = savedInstanceState.getInt(STATE_POSITION);
    }   

    pager = (ViewPager) findViewById(R.id.pager);
    arrImageUrl = getArrImageUrl();
    pager.setAdapter(new ImagePagerAdapter(arrImageUrl));
    pager.setCurrentItem(0);

} // End onCreate

public ArrayList<HashMap<String, Object>> getArrImageUrl(){
    arrImageUrl = new ArrayList<HashMap<String, Object>>();
    HashMap<String, Object> map;
    for (int i = 0; i < pagerPosition; i++) {
        map = new HashMap<String, Object>();
        url = "http://xxx.xxx/xxx/place_pictures/"+arrCursorPicture.get(i).get(CafeDbOpenHelper.PICTURE_URL);
        map.put("image_url", url);
        arrImageUrl.add(map);
    }
    return arrImageUrl;

}

@Override
public void onSaveInstanceState(Bundle outState){
    outState.putInt(STATE_POSITION, pager.getCurrentItem());
}

private class ImagePagerAdapter extends PagerAdapter {

    private ArrayList<HashMap<String, Object>> myArr = new ArrayList<HashMap<String,Object>>();;
    private LayoutInflater inflater;


    ImagePagerAdapter(ArrayList<HashMap<String, Object>> myArr) {
        this.myArr = myArr;
        inflater = getLayoutInflater();
        imageLoader = ImageLoader.getInstance();
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((View) object);
    }

    @Override
    public void finishUpdate(View container) {
    }

    @Override
    public int getCount() {
        return myArr.size();
    }

    @Override
    public Object instantiateItem(ViewGroup view, int position) {
        View imageLayout = inflater.inflate(R.layout.item_pager_image, view, false);
        ImageView imageView = (ImageView) imageLayout.findViewById(R.id.imv_pager);
        final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);

        imageLoader.displayImage((String) myArr.get(position).get("image_url"), imageView, options, new SimpleImageLoadingListener() {
            @Override
            public void onLoadingStarted(String imageUri, View view) {
                spinner.setVisibility(View.VISIBLE);
            }

            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                String message = null;
                switch (failReason.getType()) {
                    case IO_ERROR:
                        message = "Input/Output error";
                        break;
                    case DECODING_ERROR:
                        message = "Image can't be decoded";
                        break;
                    case NETWORK_DENIED:
                        message = "Downloads are denied";
                        break;
                    case OUT_OF_MEMORY:
                        message = "Out Of Memory error";
                        break;
                    case UNKNOWN:
                        message = "Unknown error";
                        break;
                }
                Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();

                spinner.setVisibility(View.GONE);
            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                spinner.setVisibility(View.GONE);
            }
        });

        ((ViewPager) view).addView(imageLayout, 0);
        return imageLayout;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view.equals(object);
    }

    @Override
    public void restoreState(Parcelable state, ClassLoader loader) {
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public void startUpdate(View container) {
    }
}

}
4

1 に答える 1

0

ここで何をしようとしているのですか?

        i.putExtra(CafeDbOpenHelper.CAFE_ID, position);
        i.putExtra(CafeDbOpenHelper.CAFE_TITLE, position);
        i.putExtra(CafeDbOpenHelper.CAFE_ADDRESS, position);
        i.putExtra(CafeDbOpenHelper.CAFE_DESCRIPTION, position);

あなたがそこでしているのは、あなたの情報を数字に載せるだけです。リスト内の項目の位置を表す番号。

それを使用して、元のオブジェクトとそのデータをリストから取得したいと考えています。

于 2013-03-28T07:52:04.730 に答える