用户为android gridview中的每个图像输入一个名称

用户为android gridview中的每个图像输入一个名称,android,gridview,text,user-input,settext,Android,Gridview,Text,User Input,Settext,我一直在寻找这个问题的答案有多少天了,但我找不到正确的答案,所以我试着创造我自己的问题 我创建了一个包含图像的gridview,每个图像都必须有一个特定的名称。单击图像时,将出现一个对话框,要求输入为所单击图像指定的图像名称 有什么可能做到这一点?请帮忙。我已经包含了来自网格视图网络的代码: Grid.java public class Grid extends Activity{ public static Integer[] homeIC = { R.dra

我一直在寻找这个问题的答案有多少天了,但我找不到正确的答案,所以我试着创造我自己的问题

我创建了一个包含图像的gridview,每个图像都必须有一个特定的名称。单击图像时,将出现一个对话框,要求输入为所单击图像指定的图像名称

有什么可能做到这一点?请帮忙。我已经包含了来自网格视图网络的代码:

Grid.java

public class Grid extends Activity{

    public static Integer[] homeIC = {
            R.drawable.ic_launcher, R.drawable.ic_launcher,R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher
    };

    // I've used blank strings so that I could change it to the name desired by the user
    public static String[] menuName = {
            " ", " ", " ", " ", " ", " ", " ", " "
    };

    GridView gridV;

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

        gridV = (GridView) findViewById(R.id.gridview);
        gridV.setAdapter(new ImageAdapter(this, menuName, homeIC));
    }

public class ImageAdapter extends BaseAdapter
{
    private Context context;
    String[] homeText;
    Integer[] imageID;

    private LayoutInflater inflater=null;

    public ImageAdapter (Grid mainactivity, String[] name, Integer[] image)
    {
        context = mainactivity;
        homeText = name;
        imageID = image;

        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    //--returns the number of images
    public int getCount()
    {
        return homeIC.length;
    }

    //returns the ID of an item--
    public Object getItem(int position)
    {
        return position;
    }

    //returns the ID of an item
    public long getItemId(int position)
    {
        return position;
    }

    public class Holder
    {
        TextView tv;
        ImageView img;
    }

    public View getView(final int position, View convertView, ViewGroup parent)
    {       
        final Holder holder=new Holder();
        View gridV;

             gridV = inflater.inflate(R.layout.grid_content, null);
             holder.tv=(TextView) gridV.findViewById(R.id.homeText);
             holder.img=(ImageView) gridV.findViewById(R.id.homeImage);

         holder.img.setImageResource(imageID[position]);
         holder.tv.setText(homeText[position]);
         gridV.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //show dialog box and ask for a name for an image
            }
        });

        return gridV;
    }
    }
}
activity_grid.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#bbbbbb"
        android:layout_weight="1"
        android:orientation="vertical"
        tools:context="${relativePackage}.${activityClass}" >

     <GridView
            android:id="@+id/gridview"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:layout_marginTop="5dp"
            android:layout_weight="0.05"
            android:columnWidth="80dp"
            android:gravity="center"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth" >
        </GridView>
    </LinearLayout>

grid_content.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp" >

<ImageView
    android:id="@+id/homeImage"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_gravity="center"
    android:src="@drawable/ic_launcher" >
</ImageView>

<TextView
    android:id="@+id/homeText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="5dp"
    android:gravity="center"
    android:textSize="15sp" >

</TextView>

这是对话框的xml文件,用户将使用该文件为图像添加名称

添加_name.xml

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

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/TextView01"
        android:ems="10" />


    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="66dp"
        android:text="ADD" />

    <Button
        android:id="@+id/cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/ok"
        android:layout_alignBottom="@+id/ok"
        android:layout_toRightOf="@+id/ok"
        android:text="CANCEL" />

</RelativeLayout>


谢谢你的回复。这将是一个很大的帮助。

像这样在
onClick中使用它

AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setTitle("Enter image name");
alert.setMessage("Please enter the image name below");
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        String value = input.getText();
        //Get the text view and set its value
    }
});

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // Canceled.
    }
});

alert.show();

设置行的textview是usless,因为循环使用(实际上OP没有使用循环使用(这很糟糕),但getView将创建新的textview并“忘记”设置的值)哦,是的!但这将在listView的OnItemClickedListener中起作用。最好将其放在homeText[position]中,这样就可以了。OP尚未对此发表评论。希望我们的对话能让她理解。非常感谢Rohit5k2爵士和Selvin爵士的回复。我会试试你的建议,希望我没弄错。我已经为此挣扎了将近一个月。