3


これが可能かどうかわからないので、いくつかの情報が必要です。
フラグメントアクティビティがあり、そこにタブがあります。タブはリストフラグメントです。私の問題:

リストにカスタムビューが必要です。私はいくつかの情報を持っています、そしてその下に私はその場所を指すピンのある地図を持っています。これは可能ですか?ListFrragment内のMapFragment???
あなたがこれが可能であると言うことができて、それをどのように実行するかについて正しい方向に私を向けることができれば、私は非常に感謝するでしょう!!!
ありがとう...

4

2 に答える 2

4

これは可能ですか?

ある種の静的な地図画像を使用していることは確かです。Googleにはそのための静的マップAPIがあります。主にWebで使用するためのものですが、原則としてAndroidアプリからも取得できるはずです。

ListFrragment内のMapFragment?

フラグメントを行に配置することは、その子がであると予想されるListViewように、困難または不可能になるため、おそらくの代わりにを使用する必要があります。さらに、マップのスクロールに関するすべての問題があります。そして、これは非常に重いソリューションなので、パフォーマンスの問題が予想されます。ListViewViewsMapViewMapFragment

于 2013-02-22T17:58:36.137 に答える
4

私はちょうど同様の問題を経験し、次の解決策を思いつきました。ちなみに、今プレイサービスはグーグルマップライトモードになっています。

BaseAdapterを使用するListViewがあると仮定して、getViewメソッドをオーバーライドする必要があります。これは私のgetViewがどのように見えるかです:

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    if ( convertView == null )
        convertView = new CustomItem(mContext,myLocations.get(position));

    return convertView;
}

ここで、クラスCustomItemは、私の行を表すFrameLayoutです。

public class CustomItem extends FrameLayout {

public int myGeneratedFrameLayoutId;

public CustomItem(Context context,Location location) {
    super(context);
    myGeneratedFrameLayoutId = 10101010 + location.id; // choose any way you want to generate your view id

    LayoutInflater inflater = ((Activity) context).getLayoutInflater();

    FrameLayout view = (FrameLayout) inflater.inflate(R.layout.my_custom_item,null);
    FrameLayout frame = new FrameLayout(context);
    frame.setId(myGeneratedFrameLayoutId);

    int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, getResources().getDisplayMetrics());
    LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT,height);
    frame.setLayoutParams(layoutParams);

    view.addView(frame);

    GoogleMapOptions options = new GoogleMapOptions();
    options.liteMode(true);
    MapFragment mapFrag = MapFragment.newInstance(options);

    //Create the the class that implements OnMapReadyCallback and set up your map
    mapFrag.getMapAsync(new MyMapCallback(location.lat,location.lng));

    FragmentManager fm = ((Activity) context).getFragmentManager();
    fm.beginTransaction().add(frame.getId(),mapFrag).commit();

    addView(view);
}

それが誰かを助けることを願っています。

于 2015-01-29T22:58:08.320 に答える