2014-11-23 4 views
0

Я пытаюсь сделать какой-то GridView с помощью this official example, и я не знаю, как добавить текст под изображениями. Я попробовал этот код для адаптера, но он не работает:Как добавить текст в GridView в Android

public class ImageAdapterForGridView extends BaseAdapter { 

    private Context mContext; 

    public ImageAdapterForGridView(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; 
     TextView textView = null; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 

      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(250, 250)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
      textView = new TextView(mContext); 
      textView.setLayoutParams(new GridView.LayoutParams(100, 100)); 
      textView.setPadding(8,8,8,8); 
     } else { 
      imageView = (ImageView) convertView; 
      //textView = (TextView) convertView; 
     } 

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

    /* public TextView getTextView(int position, TextView convertView, ViewGroup parent){ 
     TextView textView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      textView = new TextView(mContext); 
      textView.setLayoutParams(new GridView.LayoutParams(100, 100)); 
      textView.setPadding(8,8,8,8); 
     } else { 
      textView = convertView; 
     } 
     textView.setText(mThumbTexts[position]); 
     return textView; 
    }*/ 

    // references to our images 
    private Integer[] mThumbIds = { 
      R.drawable.ic_facebook, R.drawable.ic_flickr, 
      R.drawable.ic_gmail, R.drawable.ic_linkedin, 
      R.drawable.ic_picasa, R.drawable.ic_myspace, 
      R.drawable.ic_rss, R.drawable.ic_skype, 
      R.drawable.ic_tuenti, R.drawable.ic_twitter, 
      R.drawable.ic_windowslive, R.drawable.ic_vimeo, 
      R.drawable.ic_yahoo, R.drawable.otro_32, 
    }; 

    private String[] mThumbTexts = { 
      "Facebook", "Flickr", "Gmail", "LinkedIn", "Picasa", "Myspace", "RSS", "Skype", "Tuenti", 
      "Twitter", "WindowsLive", "Vimeo", "Yahoo", "Otros" 
    }; 
} 

Вы знаете, как я мог бы добавить некоторые TextView так же, как я делаю добавить ImageView ??

Большое вам спасибо за вашу помощь :)

+0

Вы goofed большое время здесь, мы не возвращаем конкретный вид в методе представления GET, мы возвращаем макет, который надувают как вид, и в том, что макет ImageView и TextView добавляют –

+0

Да , ты прав. Я программирую на Android в течение 1 недели. – Razvi

+0

Основы очень важны, чувак, сначала вы должны очистить свои основы, а затем перейти к разработке, возможно, следовать некоторым известным учебникам или чем-то. –

ответ

0

Если вы хотите изображение с ярлыком, вы можете пойти на соединение Drawable. В Android текстовое изображение может иметь связанное с ним изображение. Вы можете достичь этого через drawableTop/Left/Right/Bottom в XML или через setCompoundDrawables программно. Ответьте на мой вопрос на более подробные сведения о том, как вы можете это сделать: https://stackoverflow.com/a/26959558/1003528 с примерным примером для gridview.

1

в методе getView вы возвращаете свой imageView попробуйте добавить YOUT ImageView и TextView к LinearLayout и возвращает этот макет.

LinearLayout layout = new LinearLayout(this); 
layout.setOrientation(LinearLayout.VERTICAL); 
... 
layout.addView(imageView); 
layout.addView(textView); 
... 
return layout; 
+0

Большое вам спасибо :) Это сработало для меня именно так :) Даже если я не знаю, когда вызывается getView , он работает :) – Razvi

+0

, пожалуйста, примите мой ответ, если он решит вашу проблему! :) –

Смежные вопросы