2010-09-21 54 views
0

我已經按照教程,似乎無法得到它的工作。這裏是我的代碼:你好,GridView教程不工作

GridView.java:

package com.example.gridview; 

import android.app.Activity; 
import android.os.Bundle; 

public class GridView extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    GridView gridview = (GridView) findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(this)); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 
private Context mContext; 

public ImageAdapter(Context c) { 
    mContext = c; 
} 

public int getCount() { 
    return mThumbIds.length; 
} 

public Object getItem(int position) { 
    return null; 
} 

public long getItemId(int position) { 
    return 0; 
} 

// create a new ImageView for each item referenced by the Adapter 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { // if it's not recycled, initialize some attributes 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(8, 8, 8, 8); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setImageResource(mThumbIds[position]); 
    return imageView; 
} 

// references to our images 
private Integer[] mThumbIds = { 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7 
    }; 

的main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 

我得到的是錯誤信息無處不在。我做錯了什麼?我遵循了教程所說的一切。

回答

0

你可以去項目並選擇「Android Tool-> Project Properties」,然後清理項目「Project - > Clean」。 如果它仍然存在,請轉到AndroidManifest.xml並檢查是否有任何錯誤

1

我也有點問題。

爲了解決所有的錯誤,我只是在eclipse中按下ctrl-shift-o來導入所有的東西。 然後在我的ImageAdapter.java中,我確定我在頂部定義了包。 所以請確保包com.example.gridview;是在你的ImageAdapter.java

希望有所幫助。

2

當我剛剛查看它時,android文檔中的這個示例仍然沒有包含2011年12月的相應命名空間。因此,如上所述,在活動類中單擊ctrl -shift -o將導入所有適當的名稱空間。

但是,除此之外,在這一行 Toast.makeText(HelloGridView.this,「」+ position,Toast.LENGTH_SHORT).show();

您需要確保HelloGridView是您正在使用的實際Activity類的名稱。例如,我的類的名稱實際上是HelloGridViewActivity,因此此行對我而言是錯誤的。

最後,當您創建imageadapter.java類時,請確保該類與您的活動java類位於相同的命名空間中,例如tests.examples.HelloGridView。

這3個項目允許我運行樣本。

1

因此,我遇到了同樣的問題,並在每個頁面上按Ctrl + Shift + O後,然後我將HelloGridView更改爲HelloGridViewActivity.java類最底層的HelloGridViewActivity,我只剩下可繪製文件夾問題。

在教程中它使用了一個可繪製的文件夾。你只能得到一個drawable-hdpi,drawable-mdpi和drawable-ldpi,所以你必須在res文件夾中創建一個名爲drawable的新文件夾,以便代碼工作。如果沒有,你可以把它放在drawable-hdpi文件夾中,然後做一個查找/替換。

祝你好運!

4

問題是,就像馬特所說,你的活動的名稱是「GridView」,並且你調用Toast.makeText(HelloGridView.this,... - >「GridView」不同於「HelloGridView 「,而且他們必須是同一個名字。

按Ctrl ++Ø幫助過,因爲這將增加所有的代碼所需的進口。

0

您還沒有導入所有必需的類和Eclipse有時不使用通過單擊導入類。

按(按Ctrl + Shift + O)導入所有必需的類 在那裏我固定它

MainActivity.java

// import all packages: 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.GridView; 
import android.widget.AdapterView.OnItemClickListener; 

public class MainActivity extends Activity { 

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

    GridView gridview = (GridView) findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(getApplicationContext())); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick1(AdapterView<?> parent, View v, 
       int position, long id) { 
      Toast.makeText(MainActivity.this, "" + position, 
        Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 

     } 
    }); 
} 

} 

這將幫助。 保持編碼..!