0

私はカスタムArrayAdapterを使用していますが、getView()のメソッドは呼び出されていません。 しかし、getCount()メソッドで確認しましたが、私の場合はvalue > 0. 2が返されます。 アダプタのコードスニペットは次のとおりです。getViewメソッドが呼び出されていない、フラグメント内のArrayAdapter

public class ProfilesSwipableAdapter extends ArrayAdapter<SoundProfile> { 
private final ArrayList<SoundProfile> cards; 
private final LayoutInflater layoutInflater; 
private GoogleApiClient mGoogleApiClient; 
private Context mContext; 

public ProfilesSwipableAdapter(Context context, int resource, ArrayList<SoundProfile> cards) { 
    super(context, 0, cards); 
    this.mContext = context; 
    this.cards = cards; 
    //this.layoutInflater = LayoutInflater.from(context); 
    this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (mGoogleApiClient == null) { 
     mGoogleApiClient = new GoogleApiClient.Builder(mContext) 
       .addApi(LocationServices.API) 
       .build(); 
    } 
    mGoogleApiClient.connect(); 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    final SoundProfile card = cards.get(position); 
    View view = layoutInflater.inflate(R.layout.list_item_profile, parent, false); 

    Glide.with(mContext) 
      .load(getMapURLBlack) 
      .into(((ImageView) view.findViewById(R.id.map_lite))); 

    ((TextView) view.findViewById(R.id.txtProfileName)).setText(card.profileName); 

    view.findViewById(R.id.imgEdit).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final LocationManager manager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); 

      if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
       buildAlertMessageNoGps(); 
      } else { 
       Intent intent = new Intent(mContext, MainActivity.class); 
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       intent.putExtra("name", card.profileName); 
       intent.putExtra("key", card.mKey); 
       intent.putExtra("lat", card.latitude); 
       intent.putExtra("lng", card.longitude); 
       mContext.startActivity(intent); 
      } 
     } 
    }); 

    view.findViewById(R.id.btnDelete).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
      builder.setMessage(mContext.getResources().getString(R.string.prompt_discard_profile)) 
        .setCancelable(true) 
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) { 
          ArrayList<String> list = new ArrayList<String>(); 
          list.add(card.mKey); 
          LocationServices.GeofencingApi.removeGeofences(mGoogleApiClient, list); 
          FirebaseDatabase.getInstance().getReference().child("profiles").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(card.mKey).removeValue(); 
          EventBus.getDefault().post(new ProfileDeletedEvent(position)); 
         } 
        }) 
        .setNegativeButton("No", new DialogInterface.OnClickListener() { 
         public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) { 
          dialog.cancel(); 
         } 
        }); 
      final AlertDialog alert = builder.create(); 
      alert.show(); 
     } 
    }); 

    return view; 
} 

public void buildAlertMessageNoGps() { 
    final AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
    builder.setMessage("Your GPS seems to be disabled, do you want to enable it?") 
      .setCancelable(true) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) { 
        mContext.startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) { 
        dialog.cancel(); 
       } 
      }); 
    final AlertDialog alert = builder.create(); 
    alert.show(); 
} 

@Override 
public SoundProfile getItem(int position) { 
    return cards.get(position); 
} 

@Override 
public long getItemId(int i) { 
    return i; 
} 

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

}

私は断片からこのアダプタを初期化しています。 私は渡しているArrayListがitems > 0でも& adapter.getCount returns > 0であることを確認しました。ここで何が起こっているのかは分かりません。 これはそのためのコードスニペットです。私には本当にイライラする何

profilesSwipableAdapter = new ProfilesSwipableAdapter(getActivity(), R.layout.list_item_profile, profileArrayList); 
      swipeCardView.setAdapter(profilesSwipableAdapter); 

は、私が活動を通して同じ手順に従った場合、私はアダプタのすなわちgetView()が呼び出さ取得され、正しい結果を取得しています。 何が間違っていますか?

+0

(あなたはそれがフラグメントなしで働いていると言ったので)私はあなたのアダプタは大丈夫だと思うので、我々はあなたがフラグメントの設定方法を確認する必要があります。 – 0X0nosugar

+0

フラグメントを設定するのは面白いことではありませんが、これは私がそれを呼び出す方法です。 'ProfilesFragment profilesFragment = new ProfilesFragment(); FragmentTransaction fragmentTransaction = getSupportFragmentManager()。beginTransaction(); fragment.Replace(R.id.frame_Content、profilesFragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); 'そして、createviewで、 'view = inflater.inflate(R.layout.fragment_profiles、container、false); mContext = getContext(); swipeCardView =(SwipeCardView)view.findViewById(R.id.card_stack_view); ' –

+0

まだヘルプをお探しの場合は、十分なコードを投稿して問題を再現してください。それから私はあなたのコードを実行し、エラーを見つけることを試みる。 – 0X0nosugar

答えて

0
/Just try to use below code Snippet/ 

Put the below code below onCreateView of Fragment 

Activity mactivity; 
MainActivity main_activity; 

Note: MainActivity --> is Activity on which Fragment is Attached. 


@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    mactivity = getActivity(); 

    main_activity = (MainActivity) mactivity; 
} 

And then try to use "main_activity" instead of getActivity() in 
below code. 

profilesSwipableAdapter = new ProfilesSwipableAdapter(main_activity, R.layout.list_item_profile, profileArrayList); 
     swipeCardView.setAdapter(profilesSwipableAdapter); 
+0

'main_activity =(MainActivity)mactivity;'に対してClassCastExceptionが発生しました。 –

+0

注:MainActivity - >は、フラグメントが添付されているアクティビティーです。 あなたはそのアクティビティを試みましたが、フラグメントが添付されているのは – yash786

+0

でしたが運がなかったのですか? getViewはまだ呼び出されません。 –

関連する問題