我正在创建一个Android应用程序,我遇到了这个问题:我有一个具有gridview布局的MainActivity。此布局由6个图标组成。我想为每个图标添加2件事
1.点击:开始一项新活动(我想我知道该怎么做)
2.长按:显示与该图标和活动相关的/ res / values / strings的简短字符串
到目前为止,我已经设法为这两个行为制作占位符:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
//for each gridview item, we want one click reaction (that creates a new Activity) and
//a long click reaction, that shows an informative text on what this button does
//Simple Click Action
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
//placeholder. In future will be replaced with new activity creation
}
});
//Long Click Action
gridview.setOnItemLongClickListener(new OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> parent, View v, int description, long id){
Toast.makeText(MainActivity.this, "" ,Toast.LENGTH_LONG).show();
return true;
}
});
}
现在我要做的是在Toast.makeText函数中我要打印一个资源字符串。这个字符串对于每个图标都是不同的,所以我觉得它应该通过ImageAdapter类返回,它创建了gridview。 在该类中,除其他外,我创建了一个包含每个字符串的资源ID的数组。所以我的问题是:
a)如何返回该资源ID,以便MainActivity可以使用它?
b)如果有不同的方法,那是什么?
我是新手,所以我完全有可能犯了一些巨大的错误
提前感谢您的帮助!
答案 0 :(得分:0)
点击后,您将获得已设置setOnItemClickListener
的网格布局,切换view.getId()
以便在swich中有6个案例,并根据需要在每个案例中进行转换,类似于吐司内setOnItemLongClickListener
答案 1 :(得分:0)
在onItemLongClick(...)
中使用parent
参数(应该是您的GridView)并调用...
ImageAdapter theAdapter = (ImageAdapter) parent.getAdapter();
在ImageAdapter中,只要您有返回字符串资源ID的方法,就可以使用position
参数(在代码中名为description
),例如......
int resId = theAdapter.getId(description);
然后Toast
使用...
Toast.makeText(MainActivity.this, MainActivity.this.getString(resId),Toast.LENGTH_LONG).show();
答案 2 :(得分:0)
感谢您的有用答案。结果我发现了一个不同的解决方案,效果很好。
看到如何在gridview中“访问”图像,你创建对它们的引用,我创建了一个这样的引用的整数数组:
private Integer[] testDescriptions = {
R.string.reflexes_description,
R.string.agility_description,
R.string.intellect_description,
R.string.strength_description,
R.string.proximity_description,
R.string.voice_description };
并实现了gridview.setOnItemLongClickListener,如下所示:
gridview.setOnItemLongClickListener(new OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id){
Toast toast = Toast.makeText(MainActivity.this, testDescriptions[position] ,Toast.LENGTH_LONG);
TextView v1 = (TextView) toast.getView().findViewById(android.R.id.message);
if( v1 != null) v1.setGravity(Gravity.CENTER);
toast.show();
return true;
}
});