Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中从列表视图中删除行项目?_Android_Listview - Fatal编程技术网

如何在Android中从列表视图中删除行项目?

如何在Android中从列表视图中删除行项目?,android,listview,Android,Listview,我已经创建了一个列表视图演示。列表创建成功,图像也正确地添加到右侧。现在我想,当我在列表视图中单击行右侧的交叉图像时,该行将被删除。如何执行此操作 public class MainActivity extends Activity { EditText editText; Button Button,Button1; ListView listView; ArrayList<String&

我已经创建了一个列表视图演示。列表创建成功,图像也正确地添加到右侧。现在我想,当我在列表视图中单击行右侧的交叉图像时,该行将被删除。如何执行此操作

 public class MainActivity extends Activity {

            EditText editText;
            Button Button,Button1;
            ListView listView;
            ArrayList<String> listItems;
            BaseAdapter adapter;

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);


                editText = (EditText) findViewById(R.id.editText);
              //  int pos = editText.getText().length();
                //editText.setSelection(pos);
                Button = (Button) findViewById(R.id.Button);
                listView = (ListView) findViewById(R.id.listview);
                //listView.setSelection(listView.getAdapter().getCount()-1);


                listItems = new ArrayList<String>();
                //listItems.add("First item");

                //code to only set the simple text in the listview
                //adapter = new ArrayAdapter<String>(this, R.layout., listItems);


                //Here is the creation of new anonymous class,because we can not create subclass inside any method so we create anonymous class inside the on create method
                adapter =new BaseAdapter() 
                {

                    @Override
                    public View getView(int arg0, View arg1, ViewGroup arg2)
                    {
                        // arg1 is the particular row position in list view weather the arg0 is the whole list view
                        // layout inflater for setting the text or an image on row in list view
                        LayoutInflater inflater = getLayoutInflater();
                        arg1 = inflater.inflate(R.layout.custom, null);
                        TextView textview = (TextView)arg1. findViewById(R.id.textView1);
                        textview.setText(listItems.get(arg0));
                        return arg1;
                    }

                    @Override
                    public long getItemId(int arg0) {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public Object getItem(int arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public int getCount() {
                        // TODO Auto-generated method stub
                        return listItems.size();
                    }
                };

                listView.setAdapter(adapter);


                Button.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View v) {
                        listItems.add(editText.getText().toString());
                        adapter.notifyDataSetChanged();

                        // code to display the previous added text in front through edit text in
                        listView.setSelection(listView.getAdapter().getCount()-1);
                        //code to clear edit text after enter the text in list view
                        editText.getText().clear();
                          }
                         });

                listView.setOnItemClickListener(new OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> a, View v, int position,
                            long id) {
                        Toast.makeText(MainActivity.this, "Item has been added into your list", Toast.LENGTH_LONG)
                                .show();
                    }
                });


            }
        }
公共类MainActivity扩展活动{
编辑文本编辑文本;
按钮,按钮1;
列表视图列表视图;
ArrayList列表项;
基本适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(editText)findViewById(R.id.editText);
//int pos=editText.getText().length();
//editText.setSelection(pos);
按钮=(按钮)findViewById(R.id.Button);
listView=(listView)findViewById(R.id.listView);
//listView.setSelection(listView.getAdapter().getCount()-1);
listItems=new ArrayList();
//列表项。添加(“第一项”);
//代码仅设置listview中的简单文本
//适配器=新的阵列适配器(此,R.layout.,listItems);
//这里是新匿名类的创建,因为我们不能在任何方法内创建子类,所以我们在on create方法内创建匿名类
适配器=新的BaseAdapter()
{
@凌驾
公共视图getView(int arg0、视图arg1、视图组arg2)
{
//arg1是列表视图中的特定行位置,而arg0是整个列表视图
//用于在列表视图中设置行上的文本或图像的布局充气器
LayoutInflater充气机=getLayoutInflater();
arg1=充气机充气(R.layout.custom,空);
TextView TextView=(TextView)arg1.findViewById(R.id.textView1);
setText(listItems.get(arg0));
返回arg1;
}
@凌驾
公共长getItemId(int arg0){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回null;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回listItems.size();
}
};
setAdapter(适配器);
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
添加(editText.getText().toString());
adapter.notifyDataSetChanged();
//通过“编辑中的文本”在前面显示先前添加的文本的代码
listView.setSelection(listView.getAdapter().getCount()-1);
//在列表视图中输入文本后清除编辑文本的代码
editText.getText().clear();
}
});
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(适配器视图a、视图v、内部位置、,
长id){
Toast.makeText(MainActivity.this,“项目已添加到列表中”,Toast.LENGTH\u LONG)
.show();
}
});
}
}

将删除按钮添加到列表项,或将onClickListner添加到图像中

@Override
public View getView(int position, View convertView, ViewGroup parent) 
{
    View row = null;
    LayoutInflater inflater = getLayoutInflater();
    row = inflater.inflate(R.layout.one_result_details_row, parent, false);
    ImageView image= (ImageView) row.findViewById(R.id.your_image);
     image.setTag(position);

    image.setOnClickListener(
        new OnClickListener() {
            @Override
            public void onClick(View v) {
                Integer index = (Integer) view.getTag();
                listItems.remove(index.intValue());  
                notifyDataSetChanged();
            }
        }
    );

将delete按钮添加到listItem,或将onClickListner添加到图像

@Override
public View getView(int position, View convertView, ViewGroup parent) 
{
    View row = null;
    LayoutInflater inflater = getLayoutInflater();
    row = inflater.inflate(R.layout.one_result_details_row, parent, false);
    ImageView image= (ImageView) row.findViewById(R.id.your_image);
     image.setTag(position);

    image.setOnClickListener(
        new OnClickListener() {
            @Override
            public void onClick(View v) {
                Integer index = (Integer) view.getTag();
                listItems.remove(index.intValue());  
                notifyDataSetChanged();
            }
        }
    );
这里的位置是您的列表行id

notifyDataSetChanged();
这里的位置是您的列表行id

notifyDataSetChanged();

从列表中删除填充listview的项目并调用
适配器。notifyDataSetChanged()
我不理解您的答案,请简单地清除它。根据索引从
listItems
中删除项目,然后在适配器上调用notifyDataSetChanged,这将刷新listview。do search stackoverflow您会发现类似的帖子从列表中删除填充listview的项目并调用
适配器。notifyDataSetChanged()
我不理解您的答案,请简单地清除它。根据索引从
listItems
中删除项目,然后在适配器上调用DataNotifyDataSetChanged,这将刷新listview。搜索stackoverflow当我点击图片时,你会发现类似的帖子,然后该行将被删除。不使用按钮。好的,我已经编辑了我的答案。在getView中初始化图像并在getView方法中为其添加onClickListenre我只想在单击图像时删除该行。不使用按钮。确定,我已编辑了我的答案。简单地在getView中初始化图像,并在Tost.makeText()上方的getView方法中为其添加onClickListenre。你能解释一下你的答案吗?你能解释一下你的答案吗?