2012-06-05 6 views
5

Aquí está el método getView de mi DownloadableProjectsFromWebAdapter clase:Android LayoutInflater Edición

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    DownloadableProjectsFromWebHolder holder = null; 

    if(row == null) 
    { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 

     holder = new DownloadableProjectsFromWebHolder(); 
     holder.txtPid = (TextView)row.findViewById(R.id.tvAllProjectsPid); 
     holder.txtName = (TextView)row.findViewById(R.id.tvAllProjectsName); 
     holder.txtShareable = (TextView)row.findViewById(R.id.tvAllProjectsShareable); 

     row.setTag(holder); 
    } 
    else 
    { 
     holder = (DownloadableProjectsFromWebHolder)row.getTag(); 
    } 

    String share_text; 
    AllProjectListInfo li = data.get(position); 
    holder.txtPid.setText("ID: " + Integer.toString(li.getId())); 
    holder.txtName.setText(li.getName()); 
    if (li.getShareable()){ 
     share_text = "Public Project"; 
    } else { 
     share_text = "Private Project"; 
    } 
    holder.txtShareable.setText(share_text); 

    return row; 
} 

Las líneas que están causando el problema:

35: LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
36: row = inflater.inflate(layoutResourceId, parent, false); 

Aquí la información de LogCat:

FATAL EXCEPTION: main 
java.lang.ClassCastException: android.app.ContextImpl cannot be cast to android.app.Activity 
    at com.ericbrian.tnc.ConProForAndroid.DownloadableProjectsFromWebAdapter.getView(DownloadableProjectsFromWebAdapter.java:36) 
    at android.widget.AbsListView.obtainView(AbsListView.java:2033) 
    at android.widget.ListView.makeAndAddView(ListView.java:1772) 
    at android.widget.ListView.fillDown(ListView.java:672) 
    at android.widget.ListView.fillFromTop(ListView.java:732) 
    at android.widget.ListView.layoutChildren(ListView.java:1625) 
    at android.widget.AbsListView.onLayout(AbsListView.java:1863) 
    at android.view.View.layout(View.java:11278) 
    at android.view.ViewGroup.layout(ViewGroup.java:4224) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 
    at android.view.View.layout(View.java:11278) 
    at android.view.ViewGroup.layout(ViewGroup.java:4224) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:431) 
    at android.view.View.layout(View.java:11278) 
    at android.view.ViewGroup.layout(ViewGroup.java:4224) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 
    at android.view.View.layout(View.java:11278) 
    at android.view.ViewGroup.layout(ViewGroup.java:4224) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:431) 
    at android.view.View.layout(View.java:11278) 
    at android.view.ViewGroup.layout(ViewGroup.java:4224) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489) 
    at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4424) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 

Aquí la llamada del adaptador:

DownloadableProjectsFromWebAdapter adapter = 
    new DownloadableProjectsFromWebAdapter(
     getBaseContext(), 
     R.layout.all_projects_listview_item, 
     results); 

Y, por último, los resultados definición:

List<AllProjectListInfo> results 

Ahora, he copiado el código de otro lugar que donde yo uso un adaptador personalizado. Sin embargo, ese funciona bien. No entiendo por qué este no.

Cualquier ayuda es apreciada.

Gracias.

Respuesta

15

En lugar de esto (que es en su mayoría mal):

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

hacer esto:

LayoutInflater inflater = LayoutInflater.from(context); 
+0

Perfecto, funciona como una bala de plata. – Josh

0

se está ajustando el contexto equivocado en el adaptador:

Prueba esto:

DownloadableProjectsFromWebAdapter adapter = 
new DownloadableProjectsFromWebAdapter(
    MyActivityClass.this, 
    R.layout.all_projects_listview_item, 
    results);