2015-04-22 60 views
1

我正在使用適配器將數據加載到列表視圖,並試圖使用overridePendingTransitionintentoverridePendingTransition的使用導致列表適配器中出現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)

相關問題