2015-04-22 1 views
1

Я использую адаптер для загрузки данных в список, и я пытаюсь использовать overridePendingTransition с intent.Использование overridePendingTransition привело к classcastexception в списке адаптера

Это, как я использую его,

((Activity) context).overridePendingTransition(
         R.anim.slide_in_right, R.anim.slide_out_left); 

Это adapter.java класс

public class CustomListAddress extends BaseAdapter { 

    private Context context; 
    private final List<String> firstName; 


    public CustomListAddress(Context c, List<String> firstName) { 

     this.context = c; 
     this.firstName = firstName; 

    } 

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

    @Override 
    public Object getItem(int position) { 
     return firstName.get(position); 
    } 

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

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = LayoutInflater.from(context).inflate(
        R.layout.address_list_item, parent, false); 

      holder.tvHeader = (TextView) convertView.findViewById(R.id.lblname); 
      convertView.setTag(holder); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.tvHeader.setText(firstName.get(position)); 

     LinearLayout addresslist = (LinearLayout) convertView 
       .findViewById(R.id.addressLayout); 
     addresslist.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent next = new Intent(context, 
         ActivityMyAddressAdd.class); 
       next.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
         | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 

       next.putExtra("firstName", firstName.get(position)); 

       context.startActivity(next); 
       ((Activity) context).overridePendingTransition(
         R.anim.slide_in_right, R.anim.slide_out_left); 
      } 
     }); 

     return convertView; 
    } 

    private class ViewHolder { 
     private TextView tvHeader; 
    } 
} 

Когда я попытался его, как показано в классе адаптера он выходит из строя и дает нижеуказанному исключение ,

enter image description here

ответ

3

Похоже, вы передаете Application контекст вместо Activity контексте CustomListAddress конструктора. Чтобы начать новый Activity, вам нужно использовать его контекст.

Вы должны сделать что-то вроде этого:

public class SomeActivity extends Activity { 
     CustomListAddress adapter; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      ... 
      adapter = new CustomListAddress(this, firstName); 
      ... 
     } 
} 

Первый аргумент SomeActivity.this должен сделать трюк

+0

Может ли я это сделать – modabeckham

+0

Это дает и ошибка – modabeckham

+0

ваш ответ ниже точно такой же, как у меня ... – flyingAssistant

1

я смог добиться ответа, изменяя эту строку в моем классе деятельности, потому что нужно пройти экземпляр активности.

adapter = new CustomListAddress(ActivityMyAddressList.this,firstName).