Макет Android GridMenu - изображения не отображаются - PullRequest
0 голосов
/ 18 декабря 2011

Я создаю простое приложение для собственного использования.Я хочу иметь простое меню, используя GridLayout, используя массивы и ArrayAdapter.

Вот мой код Java:

package com.jlo.love;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;

public class Love extends Activity implements OnItemClickListener{
    /** Called when the activity is first created. */

    GridView menu;
    private String[] menu_text = {
    "Location",
    "Rotate",
    "Gallery",
    "View",
    "My Places",
    "Search"};

    Integer[] menu_icon = {
            android.R.drawable.ic_menu_mylocation,
            android.R.drawable.ic_menu_rotate,
            android.R.drawable.ic_menu_gallery,
            android.R.drawable.ic_menu_view,
            android.R.drawable.ic_menu_myplaces,
            android.R.drawable.ic_menu_search};


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        menu = (GridView)findViewById(R.id.Menu);
        menu.setOnItemClickListener(Love.this);
        menu.setAdapter(new MenuItem(Love.this, R.layout.menu_item, menu_text));




    }
    public class MenuItem extends ArrayAdapter<String> {

        public MenuItem(Context context, int textViewResourceId, String[] objects) {

        super(context, textViewResourceId, objects);

        }

}
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater=getLayoutInflater();
        View row=inflater.inflate(R.layout.menu_item, parent, false);
        TextView tv=(TextView)row.findViewById(R.id.text);
        ImageView iv = (ImageView)row.findViewById(R.id.Menu);

        tv.setText(menu_text[position]);
        iv.setImageResource(menu_icon[position]);
        return row;

        }



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

    }


}//end class

это мои XML-файлы

menu_item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal|top"
android:maxLines="2"
android:textColor="#000"
android:drawablePadding="5dp"
android:minLines="2"
android:background="@null">
</TextView>

Мой второй XML - menu.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Menu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="25dp"
android:horizontalSpacing="10dp"
android:columnWidth="70dp"
android:background="#ffffff"
android:stretchMode="columnWidth"
android:gravity="center_horizontal|top"
android:scrollbars="none"
android:paddingTop="10dp">
</GridView>

У меня есть 6 значков на всех 3 папках для рисования.

Когда я запускаю его на симулятореэто то, что у меня есть -

появляется текст, но не отображается значок изображения.

Снимок экрана

enter image description here

Может кто-нибудь указатья в правильном направлении ..

1 Ответ

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

Если я все правильно понял, вы хотите, чтобы появилось несколько значков с текстом, отображаемым в виде сетки. Но я заметил, что ваш элемент меню xml не имеет изображения, вы должны получить исключение NULLPOINTER, вы отправили правильный xml / java?

...