1

ここに画像の説明を入力してください

リストアイテムには、「削除」ボタンとテキストビューがあります。リストアイテムの削除ボタンをクリックすると、その特定のリストアイテムを削除します。しかし、私の質問は、最初とユーザーがクリックしたときに削除ボタンが表示されないことです。画面上部にある下の「編集」ボタンで、すべてのボタンを非表示から表示にしたいと思います。しかし、それを実装する方法がわかりません。

ListViewAdapater.java:

public class ListViewAdapter extends BaseAdapter {

    public ArrayList<String> list;
    Context context;
    private LayoutInflater mInflater;

    int count = 0;
    static int list_size;

    public ListViewAdapter(Context context, ArrayList<String> list) {
        super();
        this.context = context;
        this.list = list;
        mInflater = LayoutInflater.from(context);
        list_size = list.size();
    }

    public int getCount() {
        if (list == null) {
            return 0;
        } else {
            return list_size;
        }
    }

    @Override
    public Object getItem(int position) {
        Log.i("Calling getItem()", "getItem()");
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        Log.i("Calling getItemId()", "getItemId()");
        return position;
    }

    static class ViewHolder {
        TextView notes_text;

        static Button delete;
    }

    //  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.i("ListViewAdapter is calling...", "calling...");
        ViewHolder holder;
        Log.i("View to be converted", "" + convertView);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.simplerow, null);
            Log.i("View to be converted", "" + convertView);
            holder = new ViewHolder();
            holder.notes_text = (TextView) convertView.findViewById(R.id.rowTextView);

            holder.delete = (Button) convertView.findViewById(R.id.btn_minus);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.notes_text.setText((String) list.get(position));

        holder.delete.setTag((Integer) position);

        holder.delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                Integer myIntegerObject = new Integer((Integer) view.getTag());
                Log.i("Integer postioton", "" + myIntegerObject.intValue());

                list.remove(list.indexOf(list.get(myIntegerObject.intValue())));

                list_size = list.size();

                notifyDataSetChanged();
            }
        });

        return convertView;
    }
}
4

1 に答える 1

4

編集モードを示すブールフラグを保持します。ListAdapterで、可視性をブールフラグにgetView()設定するか、ブールフラグに応じて設定します。ButtonVISIBLEGONE

ここで、すべてのボタンの表示を切り替えるには、ブールフラグを変更notifyDataSetChanged()し、アダプターを呼び出します。これにより、表示されているすべてのリストアイテムが再描画されます。

アダプタクラスに変数を追加します。

boolean editmode = false;

getView()

holder.delete.setVisibility( (editmode ? View.VISIBLE : View.GONE ) );

最後に、アダプタクラスにメソッドを追加します。

public void setEditMode(boolean value){
  editmode = value;
  this.notifyDataSetChanged();
}
于 2012-10-11T13:03:20.117 に答える