刷新的ListView与BaseAdapter [英] Refresh ListView with BaseAdapter

查看:118
本文介绍了刷新的ListView与BaseAdapter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在每个item.I想要一个删除按钮,当按钮pressed要从数据删除的项(包含HashMap的ArrayList)一个ListView和ListView控件太解雇。

I have a ListView with a delete button on each item.I want when the button is pressed the item to be removed from data(An ArrayList of HashMaps) and dismiss from ListView too.

下面是我的code:

BaseAdapter:

BaseAdapter:

public class MyCustomAdapter extends BaseAdapter{

 private ArrayList<HashMap<String, Object>> list;

 private Context context;

 public MyCustomAdapter(ArrayList<HashMap<String, Object>> list,Context  context){

    this.list = list;
    this.context = context;
}


@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    View view = convertView;

    if(view == null){

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        view = inflater.inflate(R.layout.addresslist_item, null);



        TextView address = (TextView) view.findViewById(R.id.listtxtaddress);

        String add = String.valueOf(list.get(position).get("address"));

        address.setText(add);

        Button btndelete = (Button) view.findViewById(R.id.listbtndelete);

        btndelete.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Log.d("check", "item_positiona:"+position);
                Log.d("check", "lista:"+list.toString());

                AlertDialog.Builder builder = new AlertDialog.Builder(context);

                builder.setTitle("Τιτλος επιχειρησησης");

                builder.setMessage("Θέλετε να διαγάρψετε αυτή τη διεύθυνση;");

                builder.setNegativeButton("NAI", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                        Log.d("check", "item_positionb:"+position);


                        list.remove(position);

                        notifyDataSetChanged();


                    }
                });

                builder.setPositiveButton("AKYPO", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                    }
                });

                AlertDialog abc = builder.create();

                abc.show();



            }
        });


    }

    return view;


}
}

我的问题是,该项目是从数据中删除,但ListView的时候是只更新了最后一个项目被删除,而不是项目,我select.Any想法,为什么出现这种情况?先谢谢了。

My problem is that the item is removed from data but the when ListView is update only the last item is removed and not the item that i select.Any ideas why this happening? Thanks in Advance.

推荐答案

您可以尝试也这样..
创建一个Listener接口

You can try this way also.. Create a Listener interface

package xyz.listeners;

public interface DeleteClickListener {

    public void onDeleteClick(int position);

}

比你们actvity /片段有列表视图 -

Than in your actvity/fragment that has listview-

private DeleteClickListener mDeleteClickListener;
mDeleteClickListener = new DeleteClickListener() {

            @Override
            public void onDeleteClick(int position) {

     list.remove(position);
adapter.notifyDataSetChanged();
            }
        };

在您的适配器类构造器中传递的监听器。

In your adapter class contructor pass that listener.

public MyCustomAdapter(ArrayList<HashMap<String, Object>> list,Context  context,DeleteClickListene mDeleteClickListener){

    this.list = list;
    this.context = context;
    deleteClickListener=mDeleteClickListener;

}

然后删除按钮的onClick

and then onClick of Delete button

builder.setNegativeButton("NAI", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                              deleteClickListener.onDeleteClick(position);




                            }
                        });

这篇关于刷新的ListView与BaseAdapter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆