我试图创建Android的一个GridView下面的例子here,只是按钮除了图像。这是我改变了代码:为什么onClickListener在这个例子中不再工作?
public class ButtonAdapter extends BaseAdapter {
private Context mContext;
private String[] filesnames = {
"File 1",
"File 2",
"Roflcopters",
"File 1",
"File 2",
"Roflcopters",
"File 1",
"File 2",
"Roflcopters",
"File 1",
"File 2",
"Roflcopters"
};
public ButtonAdapter(Context c) {
mContext = c;
}
public int getCount() {
return filesnames.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) {
Button btn;
if (convertView == null) {
// if it's not recycled, initialize some attributes
btn = new Button(mContext);
btn.setLayoutParams(new GridView.LayoutParams(100, 85));
btn.setPadding(8, 8, 8, 8);
}
else {
btn = (Button) convertView;
}
btn.setText(filesnames[position]);
// filenames is an array of strings
btn.setTextColor(Color.WHITE);
btn.setBackgroundResource(R.drawable.sample_0);
btn.setId(position);
return btn;
}
}
,当然,我略微改变了主要的Java代码,我已经叫这个适配器和活性不同:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.select_route);
GridView gridview = (GridView) findViewById(R.id.selectroute_view);
gridview.setAdapter(new ButtonAdapter(this));
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(SelectRoute.this, "" + position,
Toast.LENGTH_SHORT).show();
}
});
}
一切正常,到目前为止, ,除了点击其中一个按钮时,我不会收到吐司消息。我没有看到任何错误 - 那么我做错了什么?
我会尝试,但我不明白为什么它不会像原来的例子工作... – Alex
随着你的建议我有局部变量访问等问题 – Alex