2013-07-03 76 views
0

我试图显示图像的网格视图。我尝试了下面的代码,但我的应用程序在运行后得到强制关闭。在哪里出错了? 我的代码:如何显示图像的网格视图?

AndroidGridLayoutActivity:

public class AndroidGridLayoutActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     GridView gv=(GridView)findViewById(R.id.grid_view); 
     gv.setAdapter(new ImageAdapter(this)); 
    } 
} 

ImageAdapter.java:

public class ImageAdapter extends BaseAdapter { 
       private Context mcontext; 
       public Integer[] mThumbids={R.drawable.img9,R.drawable.img10,R.drawable.img11,R.drawable.img12,R.drawable.img13,R.drawable.img14}; 
       public ImageAdapter(Context c) 
       { 
           mcontext=c; 
       } 

       @Override 
       public int getCount() { 
           // TODO Auto-generated method stub 
           return mThumbids.length; 
       } 

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

       @Override 
       public long getItemId(int position) { 
           // TODO Auto-generated method stub 
           return 0; 
       } 

       @Override 
       public View getView(int position, View convertView, ViewGroup parent) { 
           // TODO Auto-generated method stub 
           ImageView imageView=new ImageView(mcontext); 
           imageView.setImageResource(mThumbids[position]); 
           imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
           imageView.setLayoutParams(new GridView.LayoutParams(70,70)); 
           return imageView; 
       } 



} 

的main.xml:

<GridView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/grid_view" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="auto_fit" 
    android:columnWidth="90dp" 
    android:horizontalSpacing="10dp" 
    android:verticalSpacing="10dp" 
    android:stretchMode="columnWidth"/> 
+3

* logcat的*吗? –

+0

07-03 11:43:03.601错误/ AndroidRuntime(2184):致命异常:主 07-03 11:43:03.601:错误/ AndroidRuntime(2184):java.lang.RuntimeException:无法启动活动ComponentInfo { com.infy/com.infy.AndroidGridLayoutActivity}:java.lang.NullPointerException 07-03 11:43:03.601:ERROR/AndroidRuntime(2184):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) – user2523879

+0

07 -03 11:43:03.601:错误/ AndroidRuntime(2184):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 07-03 11:43:03.601:错误/ AndroidRuntime(2184):在android。 app.ActivityThread.access $ 2300(ActivityThread.java:125) 07-03 11:43:03.601:ERROR/AndroidRuntime(2184):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 07- 03 11:43:03.601:ERR OR/AndroidRuntime(2184):at android.os.Handler.dispatchMessage(Handler.java:99) – user2523879

回答

0

公共类MainActivity扩展活动{

GridView gv1; 

GridViewAdapter madapter; 


int arr[]={R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher}; 
String arr1[]={"ashu","hello","yes","no"}; 

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


gv1=(GridView)findViewById(R.id.gridView1); 

madapter=new GridViewAdapter(); 


gv1.setAdapter(madapter); 





} 

类GridViewAdapter延伸BaseAdapter {

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return arr1.length; 
} 

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

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 


    LayoutInflater infla=getLayoutInflater(); 

    View v=infla.inflate(R.layout.main1,null); 
    TextView tv1=(TextView)v.findViewById(R.id.textView1); 

    ImageView iv1=(ImageView)v.findViewById(R.id.imageView1); 


    tv1.setText(arr1[position]); 

    iv1.setBackgroundResource(arr[position]); 



    return v; 
}} 

}

activity_main.xml中

<GridView 
android:id="@+id/gridView1" android:layout_width="match_parent" android:layout_height="match_parent" 
android:padding="10dp" 
android:verticalSpacing="10dp" 

android:horizontalSpacing="10dp" 
android:numColumns="auto_fit" 
android:columnWidth="60dp" 
android:stretchMode="columnWidth" 

android:gravity="center" 
/> </RelativeLayout>  
main1.xml 
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:src="@drawable/ic_launcher" /> 
<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/imageView1" 
    android:text="TextView" /> </RelativeLayout> 
+0

试试这个... activity..if只希望imageview的话,请注释字符串ARR1 []和GridViewAdapter类的TextView您可以编辑INT ARR []主。 – ashu

+0

嗨wat的activity_main.xml和main1.xml包含? – user2523879

+0

@ ashu可以用来解释代码吗? LayoutInflater有什么用? – user2523879