使用自定义适配器中的动态元素

时间:2011-08-19 18:47:05

标签: android gridview baseadapter

这是我的第一个问题。 我正在创建本教程的动态网格 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");
        }
    });

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你走在正确的轨道上,但我认为在你的适配器中处理它是最有意义的。所以findViewById()对你不起作用,但是如果你将它改为convertView.findViewById()(或者在你的适配器的getView方法中返回的任何视图)它将会起作用。从那里你可以操作TextView。