如何在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。你能解释一下你的答案吗?你能解释一下你的答案吗?