单击 ArrayAdapter 中的图像以删除列表视图中的项目
Click on image inside ArrayAdapter to remove item in listview
我有碎片...
public class MyFragment extends Fragment {...
调用适配器...
MyArrayAdapter adapter = new MyArrayAdapter...
my.setAdapter(adapter);
适配器有删除项目的图像。我可以听到图像点击但无法从片段中的列表视图中删除项目。
public class MyArrayAdapter extends ArrayAdapter<String> {...
public View getView(final int position, View convertView, ViewGroup parent) {...
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// ???????????
...}
我已经很久没做了 Java,但据我所知,你可以使用这个:
this.remove(position);
this.notifyDataSetChanged();
直接调用convertView.setVisibility(View.GONE);
因为您的点击是在 OnClickListener
内部 class 内,您必须指定 MyArrayAdapter.this
才能从点击侦听器内部访问适配器的功能。如果你只使用 this
你将引用 OnClickListener
并且只能访问 class.
上的方法
像这样:
public View getView(final int position, View convertView, ViewGroup parent) {
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyArrayAdapter.this.remove(getItem(position));
MyArrayAdapter.this.notifyDataSetChanged();
}
}
您可以在适配器中编写一个方法:
private boolean removeItemByPosition(int position){
try{
items.remove(position);
this.notifyDataSetChanged();
return true;
} catch (Exception e){
e.printStackTrace();
return false;
}
}
在某些情况下,id notifyDataSetChanged()
方法不起作用,请尝试重新设置 ListView Adapter
,您应该可以在 Fragment
中执行此操作。
我有碎片...
public class MyFragment extends Fragment {...
调用适配器...
MyArrayAdapter adapter = new MyArrayAdapter...
my.setAdapter(adapter);
适配器有删除项目的图像。我可以听到图像点击但无法从片段中的列表视图中删除项目。
public class MyArrayAdapter extends ArrayAdapter<String> {...
public View getView(final int position, View convertView, ViewGroup parent) {...
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// ???????????
...}
我已经很久没做了 Java,但据我所知,你可以使用这个:
this.remove(position);
this.notifyDataSetChanged();
直接调用convertView.setVisibility(View.GONE);
因为您的点击是在 OnClickListener
内部 class 内,您必须指定 MyArrayAdapter.this
才能从点击侦听器内部访问适配器的功能。如果你只使用 this
你将引用 OnClickListener
并且只能访问 class.
像这样:
public View getView(final int position, View convertView, ViewGroup parent) {
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyArrayAdapter.this.remove(getItem(position));
MyArrayAdapter.this.notifyDataSetChanged();
}
}
您可以在适配器中编写一个方法:
private boolean removeItemByPosition(int position){
try{
items.remove(position);
this.notifyDataSetChanged();
return true;
} catch (Exception e){
e.printStackTrace();
return false;
}
}
在某些情况下,id notifyDataSetChanged()
方法不起作用,请尝试重新设置 ListView Adapter
,您应该可以在 Fragment
中执行此操作。