在自定义适配器内单击时删除列表项
Remove a list-item on click inside a custom adapter
我有一个自定义的 ArrayAdapter,我在其中使用了两种不同的布局。
列表项 1 的布局不同,其他列表项的布局相同。
列表项 1 的布局包括按钮和文本视图。我希望列表项一在有人单击其中的按钮时被删除。
class MyAdapter extends ArrayAdapter<Product> {
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return VIEW_TYPE0;
}
return VIEW_TYPE1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Product product = getItem(position);
if (convertView == null) {
if (getItemViewType(position) == VIEW_TYPE0) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout1, parent, false);
} else {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout2, parent, false);
}
}
TextView textview1;
TextView textview2;
Button button1;
if (position == 0) {
button1 = (Button) convertView.findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// delete this first list item here
}
});
} else {
textview = (TextView) convertView.findViewById(R.id.textview1);
textview.setText(product.product_name);
}
return convertView;
}
尝试使用 List 的 remove 方法并调用 notifyDataSetChanged
:
public void onClick(View v) {
// delete this first list item here
products.remove(0);
notifyDataSetChanged();
}
我有一个自定义的 ArrayAdapter,我在其中使用了两种不同的布局。
列表项 1 的布局不同,其他列表项的布局相同。
列表项 1 的布局包括按钮和文本视图。我希望列表项一在有人单击其中的按钮时被删除。
class MyAdapter extends ArrayAdapter<Product> {
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return VIEW_TYPE0;
}
return VIEW_TYPE1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Product product = getItem(position);
if (convertView == null) {
if (getItemViewType(position) == VIEW_TYPE0) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout1, parent, false);
} else {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout2, parent, false);
}
}
TextView textview1;
TextView textview2;
Button button1;
if (position == 0) {
button1 = (Button) convertView.findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// delete this first list item here
}
});
} else {
textview = (TextView) convertView.findViewById(R.id.textview1);
textview.setText(product.product_name);
}
return convertView;
}
尝试使用 List 的 remove 方法并调用 notifyDataSetChanged
:
public void onClick(View v) {
// delete this first list item here
products.remove(0);
notifyDataSetChanged();
}