你好,这是我在堆栈中的第一个问题。我正在创建本教程的动态网格 http://www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/comment-page-1/
现在它工作得很好。我的布局由 gridView 组成,在这个 gridView 下我有一个 TextView。
问题是我想更改 TextView 以在焦点更改时(在网格元素上)在每个 id 上显示不同的信息。我尝试在 ButtonAdapter 中使用 OnFocusChangeListener,但是在尝试获取对 textView 的引用时,它说 findViewById 没有实现。
我想知道如何在我的主要活动中进行引用,以允许我处理我的动态网格元素。我在 onCreate(); 中有以下内容
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ButtonAdapter(this));
所以我想从这里处理我的网格元素,有什么想法吗?谢谢
编辑:我一直在尝试改变不同的东西,但我从我的 getView 方法收到了 NullPointerException 。我找不到让它工作的方法,我会感谢任何帮助的人,这是我的代码:
public View getView(int position, View convertView, ViewGroup parent) {
final Button btn;
if (convertView == null) {
// if it's not recycled, initialize some attributes
btn = new Button(mContext);
btn.setLayoutParams(new GridView.LayoutParams(100, 55));
btn.setPadding(8, 8, 8, 8);
} else {
btn = (Button) convertView;
}
btn.setText(filenames[position]);
// filenames is an array of strings
btn.setTextColor(Color.WHITE);
btn.setId(position);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
TextView vt = (TextView) btn.findViewById(R.id.textView1);
vt.setText("Button Pressed");
}
});
谢谢。