用户为android gridview中的每个图像输入一个名称
我一直在寻找这个问题的答案有多少天了,但我找不到正确的答案,所以我试着创造我自己的问题 我创建了一个包含图像的gridview,每个图像都必须有一个特定的名称。单击图像时,将出现一个对话框,要求输入为所单击图像指定的图像名称 有什么可能做到这一点?请帮忙。我已经包含了来自网格视图网络的代码: Grid.java用户为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
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爵士的回复。我会试试你的建议,希望我没弄错。我已经为此挣扎了将近一个月。