如何应用不同的图标&;android网格视图教程中的不同文本?
请告诉我如何在android网格视图教程中更改或应用具有不同文本的不同图标。我的代码是如何应用不同的图标&;android网格视图教程中的不同文本?,android,image,gridview,text,icons,Android,Image,Gridview,Text,Icons,请告诉我如何在android网格视图教程中更改或应用具有不同文本的不同图标。我的代码是 public class Home extends Activity { //---the images to display--- Integer[] imageIDs = { }; GridView grid_main; @Override public void onCreate(Bundle savedInstanceState)
public class Home extends Activity
{
//---the images to display---
Integer[] imageIDs = {
};
GridView grid_main;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
grid_main = (GridView) findViewById(R.id.gridview);
grid_main.setAdapter(new ImageAdapter(this));
grid_main.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,
View v, int position, long id)
{
Toast.makeText(getBaseContext(),
"pic" + (position + 1) + " selected",
Toast.LENGTH_SHORT).show();
}
});
}
public class ImageAdapter extends BaseAdapter
{
Context mContext;
public static final int ACTIVITY_CREATE = 10;
public ImageAdapter(Context c)
{
mContext = c;
}
//---returns the number of images---
public int getCount() {
return 12;
}
//---returns the ID of an item---
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
//---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent)
{
View v;
if(convertView==null){
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.grid_item, null);
TextView tv = (TextView)v.findViewById(R.id.icon_text1);
tv.setText("Profile "+position);
ImageView iv = (ImageView)v.findViewById(R.id.icon_image1);
iv.setImageResource(R.drawable.bo_1);
}
else
{
v = convertView;
}
return v;
}
}
}
公共类主页扩展活动
{
//---要显示的图像---
整数[]图像ID={
};
GridView grid_main;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
grid_main=(GridView)findviewbyd(R.id.GridView);
grid_main.setAdapter(新的ImageAdapter(this));
grid_main.setOnItemClickListener(新的OnItemClickListener()
{
公共无效MClick(AdapterView父级、,
视图v,内部位置,长id)
{
Toast.makeText(getBaseContext(),
“pic”+(位置+1)+“已选定”,
吐司。长度(短)。show();
}
});
}
公共类ImageAdapter扩展了BaseAdapter
{
语境;
公共静态最终整数活动_CREATE=10;
公共图像适配器(上下文c)
{
mContext=c;
}
//---返回图像的数量---
public int getCount(){
返回12;
}
//---返回项目的ID--
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
//---返回ImageView视图---
公共视图getView(int位置、视图转换视图、视图组父视图)
{
观点五;
if(convertView==null){
LayoutInflater li=getLayoutInflater();
v=li.充气(R.layout.grid_项,空);
TextView电视=(TextView)v.findViewById(R.id.icon_text1);
tv.setText(“配置文件”+位置);
ImageView iv=(ImageView)v.findViewById(R.id.icon_image1);
iv.setImageResource(R.drawable.bo_1);
}
其他的
{
v=转换视图;
}
返回v;
}
}
}
这段代码运行得很好,但是所有的图像和文本都是相同的,所以我需要更改它。请告诉我怎么做?
任何帮助都将不胜感激 最重要的两条线是以下四条:
TextView tv = (TextView)v.findViewById(R.id.icon_text1);
tv.setText("Profile "+position);
ImageView iv = (ImageView)v.findViewById(R.id.icon_image1);
if (position == 0) {
iv.setImageResource(R.drawable.bo_1);
} else if (position == 1) {
iv.setImageResource(R.drawable.bo_2);
}
在第一行中,您从XMLlayout文件获得TextView。之后,将此文本视图的文本设置为“Profile”和一个数字。在第三行中,初始化ImageView。之后,您将在该ImageView中使用名为bo1的图像。因此,您所要做的就是在第二行中添加另一个文本,并更改第四行中引用的图像。尝试使用以下代码
public View getView(int position, View convertView, ViewGroup parent)
{
View v;
ImageView iv = null;
TextView tv = null;
if(convertView==null){
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.grid_item, null);
tv = (TextView)v.findViewById(R.id.icon_text1);
tv.setText("Profile "+position);
iv = (ImageView)v.findViewById(R.id.icon_image1);
}
else
{
v = convertView;
}
iv.setImageResource(imageIDs[position]);
return v;
}
谢谢
DeepakImageAdapter的优点是:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(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) {
View v;
if (convertView == null) { // if it's not recycled, initialize some attributes
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.grid_item, null);
TextView tv = (TextView)v.findViewById(R.id.icon_text);
tv.setText(mTextsIds[position]);
ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
iv.setImageResource(mThumbIds[position]);
} else {
v = (View) convertView;
}
return v;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.image1, R.drawable.image2,
R.drawable.image3, R.drawable.image4
};
// references to our texts
private String[] mTextsIds = {
"Text 1", "Text 2", "Text 3", "Text 4"
};
}
请注意,图像和文本位于变量mThumbIds和mTextsIds
grid_item.xml是:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="201px"
android:layout_y="165px"
android:gravity="center_horizontal"
>
<ImageView
android:id="@+id/icon_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/icon_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:gravity="center_horizontal"
android:textColorHighlight="#656565"
/>
</LinearLayout>
不,它不像您建议的那样工作。通过实现您的逻辑,即在第二行中添加另一个文本,并在第四行中更改图像引用,它会将我在getcount方法中提到的所有12个图标的图像更改为我引用的图像。实际上,我想要12个不同的图标和12个不同的文本,如果我再加上这四行,图标的数量就会增加,如果我把计数设为1,那就没问题了,但是由于xml中的线性布局,图标是垂直显示的。请帮帮我,太紧急了!顺便说一句,谢谢你帮了我!啊,你不想只是改变图像,而是各种图像。。。然后我会添加一个switch语句,就像我在回答中添加的那样。@Roflcoptr您能详细说明一下使用switch语句的逻辑吗?这样我就可以将它应用到我的代码中了@谢谢你,先生!谢谢!!我很高兴在这里见到你!!好的,现在如果我想让它们可点击,我需要做什么。。。??