2015-06-20 138 views
2

我试图在我的应用程序中添加Fancycoverflow,它可以很好地处理this example中给出的静态图像。以下错误

FATAL EXCEPTION: main 
    java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.Gallery$LayoutParams 
    at android.widget.Gallery.setUpChild(Gallery.java:889) 
    at android.widget.Gallery.makeAndAddView(Gallery.java:858) 
    at android.widget.Gallery.layout(Gallery.java:665) 
    at android.widget.Gallery.onLayout(Gallery.java:357) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1670) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1528) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1441) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1670) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1528) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1441) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
    at android.view.View.layout(View.java:14118) 
    at android.view.ViewGroup.layout(ViewGroup.java:4467) 
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2183) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1947) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4872) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:579) 
    at android.view.Choreographer.doFrame(Choreographer.java:548) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762) 
    at android.os.Handler.handleCallback(Handler.java:800) 
    at android.os.Handler.dispatchMessage(Handler.java:100) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5371) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
    at dalvik.system.NativeStart.main(Native Method) 

在例如,它给出

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import at.technikum.mti.fancycoverflow.FancyCoverFlow; 
import at.technikum.mti.fancycoverflow.FancyCoverFlowAdapter; 
import at.technikum.mti.fancycoverflow.samples.R; 

public class ViewGroupExample extends Activity { 

    // ============================================================================= 
    // Supertype overrides 
    // ============================================================================= 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.layout_inflate_example); 

     FancyCoverFlow fancyCoverFlow = (FancyCoverFlow) findViewById(R.id.fancyCoverFlow); 
     fancyCoverFlow.setAdapter(new ViewGroupExampleAdapter()); 
    } 

    // ============================================================================= 
    // Private classes 
    // ============================================================================= 

    private static class ViewGroupExampleAdapter extends FancyCoverFlowAdapter { 

     // ============================================================================= 
     // Private members 
     // ============================================================================= 

     private int[] images = {R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4, R.drawable.image5, R.drawable.image6,}; 

     // ============================================================================= 
     // Supertype overrides 
     // ============================================================================= 

     @Override 
     public int getCount() { 
      return images.length; 
     } 

     @Override 
     public Integer getItem(int i) { 
      return images[i]; 
     } 

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

     @Override 
     public View getCoverFlowItem(int i, View reuseableView, ViewGroup viewGroup) { 
      CustomViewGroup customViewGroup = null; 

      if (reuseableView != null) { 
       customViewGroup = (CustomViewGroup) reuseableView; 
      } else { 
       customViewGroup = new CustomViewGroup(viewGroup.getContext()); 
       customViewGroup.setLayoutParams(new FancyCoverFlow.LayoutParams(300, 600)); 
      } 

      customViewGroup.getImageView().setImageResource(this.getItem(i)); 
      customViewGroup.getTextView().setText(String.format("Item %d", i)); 

      return customViewGroup; 
     } 
    } 

    private static class CustomViewGroup extends LinearLayout { 

     // ============================================================================= 
     // Child views 
     // ============================================================================= 

     private TextView textView; 

     private ImageView imageView; 

     private Button button; 

     // ============================================================================= 
     // Constructor 
     // ============================================================================= 

     private CustomViewGroup(Context context) { 
      super(context); 

      this.setOrientation(VERTICAL); 

      this.textView = new TextView(context); 
      this.imageView = new ImageView(context); 
      this.button = new Button(context); 

      LinearLayout.LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
      this.textView.setLayoutParams(layoutParams); 
      this.imageView.setLayoutParams(layoutParams); 
      this.button.setLayoutParams(layoutParams); 

      this.textView.setGravity(Gravity.CENTER); 

      this.imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
      this.imageView.setAdjustViewBounds(true); 

      this.button.setText("Goto GitHub"); 
      this.button.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("https://davidschreiber.github.com/FancyCoverFlow")); 
        view.getContext().startActivity(i); 
       } 
      }); 

      this.addView(this.textView); 
      this.addView(this.imageView); 
      this.addView(this.button); 
     } 

     // ============================================================================= 
     // Getters 
     // ============================================================================= 

     private TextView getTextView() { 
      return textView; 
     } 

     private ImageView getImageView() { 
      return imageView; 
     } 
    } 
} 

而且我改变什么

,但我没有在适配器的一些变化,我尝试运行我的应用程序崩溃,并显示按我的要求是

MyAdapter

private static class ViewGroupExampleAdapter extends FancyCoverFlowAdapter { 

private LayoutInflater inflater; 
    public Activity a; 
    View vi; 
    public ArrayList<HashMap<String, String>> arr; 
    public ArrayList<HashMap<String, String>> data; 


    public ViewGroupExampleAdapter(Activity homeActivity, ArrayList<HashMap<String, String>> myList) { 

     arr = myList; 
     a = homeActivity; 
     inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    // ============================================================================= 
    // Private members 
    // ============================================================================= 

    // private int[] images = {R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher,}; 

    // ============================================================================= 
    // Supertype overrides 
    // ============================================================================= 

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

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     System.out.println("position=" + position); 
     return position; 
    } 

    @Override 
    public View getCoverFlowItem(int i, View reuseableView, ViewGroup viewGroup) { 
     View vi = reuseableView; 
     if (vi == null) 
      vi = inflater.inflate(R.layout.create_club_inflate, null); 

     TextView date1 = (TextView) vi.findViewById(R.id.txtDate1); 
     TextView date = (TextView) vi.findViewById(R.id.txtDate); 
     TextView team1_name = (TextView) vi.findViewById(R.id.txtTeamName); 
     TextView team2_name = (TextView) vi.findViewById(R.id.txtVanue); 
     TextView ground = (TextView) vi.findViewById(R.id.txt_time); 

     HashMap<String, String> product = new HashMap<String, String>(); 
     product = arr.get(i); 

     System.out.println("name 1= " + product.get("str_team1_name") + " team 2=" 
       + product.get("str_team2_obj_name")); 
     date1.setText(product.get("str_srs")); 
     date.setText(product.get("str_startdt")); 
     team1_name.setText(product.get("str_team1_name")); 
     team1_name.setAlpha(5000); 
     team2_name.setText(product.get("str_team2_obj_name")); 
     team2_name.setAlpha(5000); 
    // Typeface font = Typeface.createFromAsset(getAssets(), "TitilliumText22L006.otf"); 

     int[] color = { Color.rgb(100, 100, 100), Color.rgb(255, 255, 255) }; 
     float[] color_position = { 0, 1 }; 
     TileMode tile_mode = TileMode.MIRROR; // or TileMode.REPEAT; 
     LinearGradient lin_grad = new LinearGradient(0, 0, 0, 50, color, color_position, tile_mode); 
     Shader shader_gradient = lin_grad; 
     team1_name.getPaint().setShader(shader_gradient); 
     team2_name.getPaint().setShader(shader_gradient); 
     //team1_name.setTypeface(font); 
    // team2_name.setTypeface(font); 
     ground.setText(product.get("str_grnd")); 

     product.get("str_sName"); 
     product.get("str_team2_obj_sName"); 


     String first_team_id = product.get("str__team1_id"); 
     String second_team_id = product.get("str_team2_obj_id"); 

     switch (first_team_id) { 
     case "PAK": 
      team1_name.setBackgroundResource(R.drawable.pak); 
      break; 
     case "UAE": 
      team1_name.setBackgroundResource(R.drawable.uae); 
      break; 
     case "AUS": 
      team1_name.setBackgroundResource(R.drawable.aus); 
      break; 
     case "AFG": 
      team1_name.setBackgroundResource(R.drawable.afg); 
      break; 
     case "6": 
      team1_name.setBackgroundResource(R.drawable.ban); 
      break; 
     case "23": 
      team1_name.setBackgroundResource(R.drawable.sco); 
      break; 
     case "2": 
      team1_name.setBackgroundResource(R.drawable.ind); 
      break; 
     case "WI": 
      team1_name.setBackgroundResource(R.drawable.wi); 
      break; 
     case "13": 
      team1_name.setBackgroundResource(R.drawable.nz); 
      break; 
     case "SL": 
      team1_name.setBackgroundResource(R.drawable.sl); 
      break; 
     case "9": 
      team1_name.setBackgroundResource(R.drawable.eng); 
      break; 
     case "27": 
      team1_name.setBackgroundResource(R.drawable.ir); 
      break; 
     case "11": 
      team1_name.setBackgroundResource(R.drawable.rsa); 
      break; 
     case "ZIM": 
      team1_name.setBackgroundResource(R.drawable.zim); 
      break; 
     case "63": 
      team1_name.setBackgroundResource(R.drawable.kol_fl); 
      break; 
     case "62": 
      team1_name.setBackgroundResource(R.drawable.mum_fl); 
      break; 
     case "58": 
      team1_name.setBackgroundResource(R.drawable.chn_fl); 
      break; 
     case "61": 
      team1_name.setBackgroundResource(R.drawable.del_fl); 
      break; 
     case "65": 
      team1_name.setBackgroundResource(R.drawable.pun_fl); 
      break; 
     case "64": 
      team1_name.setBackgroundResource(R.drawable.raj_fl); 
      break; 
     case "255": 
      team1_name.setBackgroundResource(R.drawable.hyd_fl); 
      break; 
     case "59": 
      team1_name.setBackgroundResource(R.drawable.blr_fl); 
      break; 
     default: 
      team1_name.setBackgroundResource(R.drawable.otherflag); 
      // h_upcoming.tv_left.setText(str1); 
      break; 
     } 

     // second team 

     switch (second_team_id) { 
     case "PAK": 
      team2_name.setBackgroundResource(R.drawable.pak); 
      break; 
     case "UAE": 
      team2_name.setBackgroundResource(R.drawable.uae); 
      break; 
     case "AUS": 
      team2_name.setBackgroundResource(R.drawable.aus); 
      break; 
     case "AFG": 
      team2_name.setBackgroundResource(R.drawable.afg); 
      break; 
     case "6": 
      team2_name.setBackgroundResource(R.drawable.ban); 
      break; 
     case "23": 
      team2_name.setBackgroundResource(R.drawable.sco); 
      break; 
     case "2": 
      team2_name.setBackgroundResource(R.drawable.ind); 
      break; 
     case "WI": 
      team2_name.setBackgroundResource(R.drawable.wi); 
      break; 
     case "13": 
      team2_name.setBackgroundResource(R.drawable.nz); 
      break; 
     case "SL": 
      team2_name.setBackgroundResource(R.drawable.sl); 
      break; 
     case "9": 
      team2_name.setBackgroundResource(R.drawable.eng); 
      break; 
     case "27": 
      team2_name.setBackgroundResource(R.drawable.ir); 
      break; 
     case "11": 
      team2_name.setBackgroundResource(R.drawable.rsa); 
      break; 
     case "ZIM": 
      team2_name.setBackgroundResource(R.drawable.zim); 
      break; 
     case "63": 
      team2_name.setBackgroundResource(R.drawable.kol_fl); 
      break; 
     case "62": 
      team2_name.setBackgroundResource(R.drawable.mum_fl); 
      break; 
     case "58": 
      team2_name.setBackgroundResource(R.drawable.chn_fl); 
      break; 
     case "61": 
      team2_name.setBackgroundResource(R.drawable.del_fl); 
      break; 
     case "65": 
      team2_name.setBackgroundResource(R.drawable.pun_fl); 
      break; 
     case "64": 
      team2_name.setBackgroundResource(R.drawable.raj_fl); 
      break; 
     case "255": 
      team2_name.setBackgroundResource(R.drawable.hyd_fl); 
      break; 
     case "59": 
      team2_name.setBackgroundResource(R.drawable.blr_fl); 
      break; 
     default: 
      team1_name.setBackgroundResource(R.drawable.otherflag); 
      // h_upcoming.tv_left.setText(str1); 
      break; 
     } 

     return vi; 

    } 
} 

     /* private static class CustomViewGroup extends LinearLayout { 

    // ============================================================================= 
    // Child views 
    // ============================================================================= 

    private TextView textView; 

    private ImageView imageView; 

    private Button button; 

    // ============================================================================= 
    // Constructor 
    // ============================================================================= 

    private CustomViewGroup(Context context) { 
     super(context); 

     this.setOrientation(VERTICAL); 

     this.textView = new TextView(context); 
     this.imageView = new ImageView(context); 
     this.button = new Button(context); 

     LinearLayout.LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     this.textView.setLayoutParams(layoutParams); 
     this.imageView.setLayoutParams(layoutParams); 
     this.button.setLayoutParams(layoutParams); 

     this.textView.setGravity(Gravity.CENTER); 

     this.imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     this.imageView.setAdjustViewBounds(true); 

     this.button.setText("Goto GitHub"); 
     this.button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("https://davidschreiber.github.com/FancyCoverFlow")); 
       view.getContext().startActivity(i); 
      } 
     }); 

     this.addView(this.textView); 
     this.addView(this.imageView); 
     this.addView(this.button); 
    } 

    // ============================================================================= 
    // Getters 
    // ============================================================================= 

    private TextView getTextView() { 
     return textView; 
    } 

    private ImageView getImageView() { 
     return imageView; 
    } 
}*/ 
+0

你有这个作为您的进口更换? 'import android.view.ViewGroup.LayoutParams' –

+0

发布您的ViewGroupExampleAdapter类的所有代码与导入 –

+0

我有这三个导入导入android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; – Aditya

回答

1

找到import android.view.ViewGroup.LayoutParams;这条线,并与import android.widget.LinearLayout.LayoutParams;此行

+0

有没有像导入android.view的行。 ViewGroup.LayoutParams; – Aditya

+0

让我们[在聊天中继续讨论](http://chat.stackoverflow.com/rooms/81060/discussion-between-rv-panchal-and-roman)。 –

+1

聊天是一个有趣的阅读。 – sudocoder

相关问题