私は、その場で作成したカスタムアダプタからリストアイテムの外観を変更できるようにしようとしています。カスタムアダプターのリストアイテム内からボタンをクリックしたときに変更したいのですが。 This is an example of a Custom List Item looks like. ボタンをクリックすると、レイアウトを変更するアクションを実行します。たとえば、ボタンをクリックした後、別のボタンを非表示にするか、ボタンのテキストを変更します。何らかの理由で、これらのコマンドをクリックしても効果がないようです。カスタムボタンの内容を内部ボタンで更新する
私の究極の目標は、ボタンクリックでリストアイテムのサイズを変更できるようにすることです。しかし、私が言及したように、何も効果がないようです。 onClickメソッドの外部での可視性の設定はうまくいくようですが、内部で行うことはできません。私は、コードに到達していることを知っているが、私はそれがアダプタの更新ではないとは思うが、私はそこにnotifyDataSetChangedメソッドがあります。どんな助けもありがとうございます。ありがとう。 notifyDataSetChangedを呼び出す
class CustomAdapter extends ArrayAdapter<Player> {
private static class ViewHolder {
Button button, button2;
}
public CustomAdapter(Context context, ArrayList<Player> players) {
super(context, R.layout.player_expanded, players);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder; // view lookup cache stored in tag
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater infater = LayoutInflater.from(getContext());
final View customView = infater.inflate(R.layout.custom_list_item, parent, false);
viewHolder.button = (Button) customView.findViewById(R.id.button);
viewHolder.button2 = (Button) customView.findViewById(R.id.button2);
viewHolder.button.setTag(position);
viewHolder.button2.setTag(position);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.button2.setVisibility(View.VISIBLE);
viewHolder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.button2.setVisibility(View.GONE); //Doesn't take effect
notifyItemChanged(Integer.valueOf(v.getTag().toString()));
}
});
return customView;
}
}
あなたのbuttonGoneは何ですか? –
申し訳ありませんが、ちょうどタイプミスです。一定。 – CrossStitch
android:focusable = "false"削除してみてください – comeback4you