5

也許我只是爲了好奇而問錯誤的問題。我通過擴展陣列適配器來創建自定義適配器。現在我想在GridView中顯示它。我經歷了許多文章,並且在任何地方我發現他們只使用基本適配器來顯示GridView。請大家告訴我這背後的邏輯是什麼?我們可以使用陣列適配器代替基礎適配器嗎?GridView通過使用自定義ArrayAdapter

回答

3

是的,我們可以。 ArrayAdpter本身從BaseAdapter延伸。可能是這種情況搞清楚http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/widget/ArrayAdapter.java#ArrayAdapter

在-事實上,如果你只是想顯示ListViewGridView一些東西,不需要任何複雜的自定義適配器那麼它更容易只需使用一個ArrayAdapter。它只是一個由任意對象數組支持的適配器。

+0

我的疑問是,如果我將使用擴展數組適配器的自定義適配器,所以只有在佈局文件中,我將不得不做從ListView到GridView的更改。我對嗎?? – rup35h

+0

您可以對'GridView'或'ListView'使用相同的適配器。所以是的,你只需要改變佈局以及你調用'setAdapter()'的地方。 –

2

你當然可以在GridView中使用ArrayAdapter。看到此的代碼示例

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

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, numbers); 

gridView.setAdapter(adapter); 

for more detail

+0

但是可以使用'ArrayAdapter'將照片加載到'GridView'中嗎?您提供的代碼使用'simple_list_item_1',這是一個'TextView'佈局。我試圖找到一種方法來使用'ArrayAdapter',但上傳圖像,沒有文字。 – Azurespot

+0

您可以使用自定義適配器這個博客http://www.mkyong.com/android/android-gridview-example/解釋 –

+0

謝謝,但該博客只覆蓋'GridView'中的簡單文本'字符串'。圖像是一個完整的東西,因爲我在學習,你需要一個模型,並將其改變爲'位圖'等等...... :( – Azurespot

0
public class GridAdapter extends ArrayAdapter implements OnItemClickListener 
    { 
     Context c; 
     int[] img; 
     String[] p; 
     public GridAdapter(Context context, int[] img1,String[] s1) { 
      super(context,R.layout.forgridmain,R.id.textViewgd1,s1); 
      img=img1; 
      c=context; 
      p=s1; 
     } 
     public View getView(int position,View ConvertView,ViewGroup parent) 
     { 
      LayoutInflater inflater=(LayoutInflater)c.getSystemService(LAYOUT_INFLATER_SERVICE); 
      ConvertView =inflater.inflate(R.layout.forgridmain, parent, false); 
      ImageView iv1=(ImageView) ConvertView.findViewById(R.id.imageView111); 
      TextView tv=(TextView)ConvertView.findViewById(R.id.textViewgd1); 
      RelativeLayout rl=(RelativeLayout)ConvertView.findViewById(R.id.relalypout); 
      rl.setBackgroundColor(Color.TRANSPARENT); 
      iv1.setImageURI(Uri.parse("android.resource://"+getPackageName()+"/drawable/"+img[position])); 
      tv.setText(p[position]); 
      gv.setOnItemClickListener(ga); 
      return ConvertView; 

     } 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 

      Intent trans=new Intent(MainActivity.this,Listed.class); 
      trans.putExtra("first",p[arg2]); 
      startActivity(trans); 
     } 


    } 

我用這個增加圖象和文本在網格視圖。 網格視圖膨脹的佈局包含一個imageView和一個textView。

相關問題