我需要将意图传递给Android中的onClickListener
..但与正常情况稍有不同。将按钮传递给按钮
我有gridView的按钮,并且每次点击每个按钮时,它只会说明该按钮执行哪个动作(这是针对盲人),我需要Intent开始,直到用户点击同一个按钮两次。 我有这个适配器
public class BlindAdapter extends BaseAdapter implements OnClickListener{
private Context mContext;
private String[] labels;
private Button currentlyClicked;
public BlindAdapter(Context c, String[] labels) {/*Empty*/}
@Override
public int getCount() {/*Empty*/}
@Override
public Object getItem(int arg0) {/*Empty*/}
@Override
public long getItemId(int arg0) {/*Empty*/}
@Override
public View getView(int position, View convertView, ViewGroup parent) {/*Empty*/}
private void say(String text) {/*Empty*/}
@Override
public void onClick(View view) {
Button btn = (Button) view;
Log.v("id", ""+view.hashCode());
if(this.currentlyClicked == null || this.currentlyClicked.hashCode() != view.hashCode()){
if(this.currentlyClicked != null) this.currentlyClicked.setBackgroundColor(Color.LTGRAY);
this.currentlyClicked = (Button) view;
btn.setBackgroundColor(Color.GRAY);
this.say(btn.getText().toString());
} else{
this.say("Zvolena volba:" + btn.getText().toString());
btn.setBackgroundColor(Color.LTGRAY);
this.currentlyClicked = null;
}
}
//Notice I posted inly onCLick method with its body for simplicity..
我初始化它像
gridview.setAdapter(
new BlindAdapter(this.getApplicationContext(),
new String[]{"jedna", "dva", "tri", "ctyri", "pet", "šest", "osm"})
);
字符串是它们是红到了用户的操作。所以我需要通过那里甚至每个特定按钮的意图。有可能作为另一个参数传递给它吗?
或者有可能以某种方式重写我的Activity中的按钮onclick事件,并首先调用super.OnClick
,在该应用程序决定它的第一次还是第二次点击时,根据返回,我将停止整个onclick事件,或者返回到Activity中的重要事件并调用意图?
还是有更好的方法来实现这一切? (我认为至少我想到的第一种可能性真的很奇怪)。
编辑
并且怎么样让每个项目的“可聚焦” ..这将是更接近铁道部(轨迹球等)。 是否有可能使gridViewItem只在第一次点击(只需焦点)选择,并只点击下一次点击..(这是我试图实现的行为)..
看起来不错..我会做得很像这样,但它不能解决我的问题..我将有很多不同的活动使用这个按钮的GridView,所以我问如何解决按钮上的事件绑定特别是gridviews?这些绑定显然是在Activity中完成的,所以我需要通过Adapter到Button来处理它。所以我问是否有办法如何用自定义操作(在Activity中)重写onclick方法,根据onclick处理程序的超级调用(在Button中)运行哪个代码(如果是第二次点击则为no,如果是第一次则为no) – simekadam
在这种情况下,再次抱歉,如果我误解了你的意思,我想你可能会在getView方法中执行它,而在你的适配器中重写。 所以基本上,当你返回按钮或包含按钮的视图(如果你想要更多的细节,请将代码发布到你的getView中),你将调用setIntent,并且自定义按钮将处理其余部分。 – gianpi
所以实际上我需要不同的适配器为每个特定的活动? – simekadam