Android сетки вид отображения заголовка под каждой сеткой - PullRequest
1 голос
/ 04 декабря 2011

Я хочу отобразить текст под каждым изображением сетки.

Пожалуйста, смотрите мой код ниже. Пожалуйста, помогите мне найти, почему это не работает Я получаю изображения правильно отображаются, но нет текста если я пытаюсь отобразить текст в изображении его приход так что должно быть что-то с определенным макетом. но я не могу отладить

код адаптера:

 public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;

    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = mInflater.inflate(R.layout.griditems, null);
        holder = new ViewHolder();
    holder.text1 = (TextView) convertView
                .findViewById(R.id.grid_item_text);
    Log.i(TAG, holder.text1.toString());
        holder.image = (ImageView) convertView
                .findViewById(R.id.grid_item_image);


            // if it's not recycled, initialize some attributes
            holder.image.setImageResource(gridItemIds[position]);
            holder.text1.setText(gridTitles[position]);
        //holder.image.setScaleType(ImageView.ScaleType.FIT_XY);
        // holder.image.setPadding(20, 20, 20, 20);

    convertView.setLayoutParams(new GridView.LayoutParams(Utils
                .getLayoutParameter(), Utils.getLayoutParameter()));

        holder.image.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

            }
        });
        convertView.setTag(holder);
    } else {

        holder = (ViewHolder) convertView.getTag();

    }

    return convertView;
}

static class ViewHolder {
    TextView text1;
    ImageView image;

}



    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/GridItem"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   android:gravity="center_horizontal"
  >

   <ImageView android:id="@+id/grid_item_image"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content">
   </ImageView>

   <TextView android:id="@+id/grid_item_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="TextView"
      android:textColor="#000000"
      >
   </TextView>

</LinearLayout>

gridview:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">


        <TextView android:id="@+id/text1view" android:textStyle="bold"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:gravity="center_horizontal" android:background="@drawable/title_bar" 
            />

        <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:verticalSpacing="50dip"
            android:horizontalSpacing="10dp" android:numColumns="3"
            android:stretchMode="columnWidth"
            android:layout_below="@+id/text1view" 
                         android:gravity="center"
            android:layout_centerHorizontal="true" 
            android:background="@drawable/home_bg"
                        />


</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 13 мая 2013

Также попробуйте использовать RelativeLayout, поместив TextView под ImageView с помощью

 android:layout_below="@id/grid_item_image"

Это поместит его под изображение, однако, если у вас есть возможность использовать графический макет, перетаскивание его туда, куда вы хотите, вместе с изображением установит все параметры вместо вас, вместо того, чтобы печатать их.

0 голосов
/ 04 декабря 2011

Я использовал ваш xml, но с простым адаптером массива, который я написал, и все работает отлично, попробуйте заменить ваш адаптер на мой и дайте мне знать, спасибо.

class ItemsAdapter extends ArrayAdapter<String> {

    public ItemsAdapter(Context context, List<String> list) {
        super(context, R.layout.griditems, list);
    }

    @Override
    public View getView(final int position, View row, final ViewGroup parent) {
        final String item = getItem(position);

        ItemWrapper wrapper = null;
        if (row == null) {
            row = getLayoutInflater().inflate(R.layout.griditems, parent, false);
            wrapper = new ItemWrapper(row);

            row.setTag(wrapper);
        } else {
            wrapper = (ItemWrapper) row.getTag();
        }
        wrapper.refreshData(item);

        return row;
    }

}    

static class ItemWrapper {

    TextView text;
    ImageView img;

    public ItemWrapper(View row) {
        text = (TextView) row.findViewById(R.id.grid_item_text);
        img = (ImageView) row.findViewById(R.id.grid_item_image);
    }

    public void refreshData(String item) {
        img.setImageResource(R.drawable.image_1);
        text.setText(item);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...