Java Android在其他类的数组上获取特定值
我的活动中有一个数组,它由在 公共类ImageAdapter扩展了BaseAdapter。 所以它包括Java Android在其他类的数组上获取特定值,java,android,Java,Android,我的活动中有一个数组,它由在 公共类ImageAdapter扩展了BaseAdapter。 所以它包括 private Integer[] imageIDs = { R.drawable.medal_my_first_perxtamp_gray, R.drawable.medal_you_complete_me_gray, R.drawable.medal_the_gift_of_sharing_gray,
private Integer[] imageIDs = {
R.drawable.medal_my_first_perxtamp_gray,
R.drawable.medal_you_complete_me_gray,
R.drawable.medal_the_gift_of_sharing_gray,
R.drawable.medal_gimme_5_gray,
R.drawable.medal_a_cup_of_coffee_gray,
R.drawable.medal_seven_up_gray,
R.drawable.medal__gray,
R.drawable.medal_midnight_madness_gray,
R.drawable.medal_loyalista_gray,
R.drawable.medal_15_30_gray,
R.drawable.medal_kmh_gray,
R.drawable.medal_champion_gray
};
现在,在扩展活动的类中,如何调用该数组并获取特定值?很抱歉问一个简单的问题,但我对这个Android开发还不熟悉
编辑:
我忘了添加这个,一个获取数组长度的声明,它也存储在ImageAdapter类中
public int getCount() {
return imageIDs.length;
}
并为getter添加了此代码
public Integer[] getImageIDs()
{
return this.imageIDs;
}
先生
这是我试图在扩展活动的另一个类上创建的代码
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,
View v, int position, long id)
{
//Integer[] imageIDs = this.getImageIDs();
// clicked picture here
Integer[] imageIDs = this.getImageIDs();
//Toast.makeText(getBaseContext(),"pic" + (position + 1) + " selected",Toast.LENGTH_SHORT).show();
//Integer[] imageIDs = ImageAdapter.this.getImageIDs();
//for (Integer imageId : ImageAdapter.getImageIDs()){
// System.out.println(imageId );
//}
}
});
GridView GridView=(GridView)findviewbyd(R.id.GridView);
setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的OnItemClickListener()
{
公共无效MClick(AdapterView父级、,
视图v,内部位置,长id)
{
//整数[]imageIDs=this.getImageIDs();
//点击这里的图片
整数[]imageIDs=this.getImageIDs();
//Toast.makeText(getBaseContext(),“pic”+(位置+1)+“selected”,Toast.LENGTH_SHORT).show();
//整数[]imageIDs=ImageAdapter.this.getImageIDs();
//对于(整数imageId:ImageAdapter.GetImageId()){
//System.out.println(imageId);
//}
}
});
确保我能得到这个职位,但我不想使用那些使用if-else的教程
因为我认为如果不是这样的话,这将是一个漫长的过程。我在想,既然我有一个数组,为什么我不能用它来获取我想要的呢?你有两个选择,一个是面向对象的方法,另一个是使用受保护的/
访问修饰符创建一个getter,只需声明数组公共
/受保护
/默认
而不是私有
这应该允许您访问扩展类中的数组。如果您只想访问扩展类的类中的数组,只需将数组或getter方法声明为受保护的
所以,你可以这样做:
public ActivityClass
{
private Integer[] imageIDs = ...;
protected Integer[] getImageIDs()
{
return this.imageIDs;
}
}
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));
final Integer[] imageIDs = this.getImageIDs();
gridView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,
View v, int position, long id)
{
for (Integer imageId : imageIDs){
System.out.println(imageId );
}
}
});
然后在你的拓展课上:
public SomeOtherClass extends ActivityClass
{
...
Integer[] imageIDs = this.getImageIDs();
...
}
看了以后,
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,
View v, int position, long id)
{
//Integer[] imageIDs = this.getImageIDs();
// clicked picture here
Integer[] imageIDs = this.getImageIDs();
//Toast.makeText(getBaseContext(),"pic" + (position + 1) + " selected",Toast.LENGTH_SHORT).show();
//Integer[] imageIDs = ImageAdapter.this.getImageIDs();
//for (Integer imageId : ImageAdapter.getImageIDs()){
// System.out.println(imageId );
//}
}
});
上面的代码应该可以工作。从事件处理程序外部获取ID,并将数组声明为final,以便将其传递给负责事件处理的内部类,这一点很重要。您将有两种选择,一种是面向对象的方式,创建一个getter,使用
public
/protected
/default
访问修饰符,或者只声明数组public
/protected
/default
,而不是private
这应该允许您访问扩展类中的数组。如果您只想访问扩展类的类中的数组,只需将数组或getter方法声明为受保护的
所以,你可以这样做:
public ActivityClass
{
private Integer[] imageIDs = ...;
protected Integer[] getImageIDs()
{
return this.imageIDs;
}
}
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));
final Integer[] imageIDs = this.getImageIDs();
gridView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,
View v, int position, long id)
{
for (Integer imageId : imageIDs){
System.out.println(imageId );
}
}
});
然后在你的拓展课上:
public SomeOtherClass extends ActivityClass
{
...
Integer[] imageIDs = this.getImageIDs();
...
}
看了以后,
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,
View v, int position, long id)
{
//Integer[] imageIDs = this.getImageIDs();
// clicked picture here
Integer[] imageIDs = this.getImageIDs();
//Toast.makeText(getBaseContext(),"pic" + (position + 1) + " selected",Toast.LENGTH_SHORT).show();
//Integer[] imageIDs = ImageAdapter.this.getImageIDs();
//for (Integer imageId : ImageAdapter.getImageIDs()){
// System.out.println(imageId );
//}
}
});
上面的代码应该可以工作。从事件处理程序外部获取ID,并将数组声明为final,以便将其传递给负责事件处理的内部类,这一点很重要。使用公共getter方法处理
ImageID
:
for (Integer imageId : imageAdapter.getImageIDs()){
System.out.println(imageId );
}
在特定索引处的访问id:
imageAdapter.getImageIDs()[i]; // i is index of array
将公共getter方法用于
图像ID
:
for (Integer imageId : imageAdapter.getImageIDs()){
System.out.println(imageId );
}
在特定索引处的访问id:
imageAdapter.getImageIDs()[i]; // i is index of array
在“活动”中,使ImageID受到保护:
protected Integer[] imageIDs = {
...
};
您可以从扩展活动的类中访问它。在活动中使ImageID受到保护:
protected Integer[] imageIDs = {
...
};
您可以从扩展活动的类中访问它。是否要在listview或微调器上显示该图像数组?不,先生,我只想获取该数组列表,因为我需要存储在该数组上的特定值array@nick我已经做了,先生,你想在listview或微调器上显示图像数组吗?不,先生,我我只想得到数组的列表,因为我需要存储在上面的特定值array@nick我已经做了sir添加您的代码sir会给我一个错误getImageIDs无法解决或不是字段sir实际上我尝试创建的是当用户单击gridview中的图像时,我可以获得所选项目。请输入我的密码above@DELLicioso:是的,很抱歉,我的错误,我忘记在方法调用的末尾添加括号。它现在应该可以工作了。现在我收到了这个错误,先生“对于类型new AdapterView.OnItemClickListener(){}的方法getImageIDs()未定义”@DELLicioso:我从未做过android编程,但这很奇怪。。。如果在扩展另一个包含受保护getter的类的类中存在
onItemClick
方法,则错误不应出现。添加代码sir会导致错误getImageIDs无法解析或不是字段sir实际上,我试图创建的是当用户单击gridview中的图像时我可以得到所选的项目。请输入我的密码above@DELLicioso:是的,很抱歉,我的错误,我忘记在方法调用的末尾添加括号。它现在应该可以工作了。现在我收到了这个错误,先生“对于类型new AdapterView.OnItemClickListener(){}的方法getImageIDs()未定义”@DELLicioso:我从未做过android编程,但这很奇怪。。。如果onItemClick
方法存在于扩展另一个包含受保护getter的类的类中,则该错误不应存在。使用该代码,我会收到一个错误,说明“无法从MedalsActivity.ImageAdapter类型静态引用非静态方法GetImageId()”,您无法调用GetImageId()
从静态方法实际上,它建议我必须将getter设置为静态,但我认为这会导致很多错误使用该代码时,我会得到一个错误