我在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;
}
}
答案 0 :(得分:2)
不要提供与words.length一样多的按钮。使用一个不同的数据结构,比如一个布尔数组,它将保持不变或者每个按钮都已经被点击过一次(开始时都是假的)。
然后单击一个按钮时,切换布尔值。
实现适配器的getCount方法时,循环遍历数组并计算任何标志,指示仍然需要显示按钮。
Getview会稍微复杂一点:你会收到一个索引,它将是你阵列中“假”的数量。计算它们并获得正确的按钮进行显示。