0

私は GridView にボタンを追加しました。そのボタンはプログラムで追加され、ボタンの数は単語の長さに依存し、各ボタンには単語の文字があり、クリックするとそのボタンが非表示になりますが、クリックすると削除したいと思います。

ここにコードがあります

SpellAdapter.java

public class SpellAdapter extends BaseAdapter{


    public Context context;
    public char[] word;
        public String spellWord1;
    public SpellAdapter(Context context, char[] word, String orglWord)
    {
        this.context=context;
        this.word=word;
        spellWord1 = orglWord;
    }

    public int getCount() {
        count=word.length;
        return count;
    }

    public Object getItem(int position) {

        return null;
    }

    public long getItemId(int position) {

        return 0;
    }


    public View getView(final int position, View convertView, ViewGroup arg2) {

        View v = convertView;
        if (v == null) 
        {  
             LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             v = vi.inflate(R.layout.buttonlist, null);
        } 

        final Button btn= (Button)v.findViewById(R.id.letterbtn);

        btn.setText(word[position]+"");

        btn.setOnClickListener(new OnClickListener(){

            public void onClick(View v) 
            {
                letters=btn.getText();
                String word = letters.toString();
                btn.setVisibility(View.GONE); // Here invisible the button.

            }


        });

        return v; 
    }   
}
4

1 に答える 1

2

words.length ほど多くのボタンを提供しないでください。各ボタンが一度クリックされたかどうかを保持する別のデータ構造、たとえばブール配列を使用します (開始時はすべて false)。

次に、ボタンがクリックされると、ブール値を切り替えます。

アダプターの getCount メソッドを実装する場合は、配列をループして、ボタンを表示する必要があることを示すフラグをカウントします。

Getview はもう少し複雑になります。インデックスを受け取ります。これは、配列内の「false」の数になります。それらを数えて、表示する正しいボタンを取得します。

于 2012-07-12T05:11:12.750 に答える