我正在使用BaseAdapter
视图持有者模式。
我想从Listview
设置中隐藏某些项目:
convertView.setVisibility(View.GONE);
什么也没做。
我正在使用BaseAdapter
视图持有者模式。
我想从Listview
设置中隐藏某些项目:
convertView.setVisibility(View.GONE);
什么也没做。
从适配器列表中删除其项目并重新加载适配器,如果您需要再次显示该项目,请考虑使用另一个列表。
这个答案做你需要的操作列表,它排序,你可以调整它以删除项目
编辑
要实现撤消,您可能需要一个保存原始值的列表、一个保存已删除项目索引的堆栈以及另一个从原始 list-removed_indices 生成的列表,并将在您的适配器中使用
试试这个:
listitem.setVisibility(View.INVISIBLE);
或者
listitem.setVisibility(View.GONE);
这里有一个例子:
ListActivity.this.setListAdapter(new SimpleAdapter(MainActivity.this, contactsList,
R.layout.list_item,
new String[] { TAG_CONTACT_NAME, TAG_STATUS}, new int[] {
R.id.name, R.id.status}){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
TextView statTview = (TextView)v.findViewById(R.id.status);
String stat = statTview .getText().toString();
if (stat.equals("0")){
v.findViewById(R.id.status).setVisibility(View.GONE);
}
return v;
}
}
);
您可以将隐藏位置存储在另一个 ArrayList 中并像这样隐藏该项目:
public class SampleAdapter extends BaseAdapter {
Activity activity;
ArrayList<String> listItems;
ArrayList<Integer> hiddenPositions = new ArrayList<>();
public SampleAdapter(Activity activity, ArrayList<String> listItems) {
this.activity = activtity;
this.listItems = listItems;
}
...
@Override
public View getView(int position, View convertView, ViewGroup arg2) {
// The following small snippet of code ensures
// that we skip data from all the hidden positions
// and use the updated position to fetch the
// correct data from the listItems ArrayList.
for(Integer hiddenIndex : hiddenPositions) {
if(hiddenIndex <= position) {
position = position + 1;
}
}
String testString = listItems.get(position);
...
}
@Override
public int getCount() {
return listItems.size() - hiddenPositions.size();
}
}
为了能够在列表中显示它,只需从hiddenPositions
ArrayList 中删除该位置并执行notifyDataSetChanged();
在这里解释得更好:http: //vshivam.wordpress.com/2015/01/07/hiding-a-list-item-from-an-android-listview-without-removing-it-from-the-data-source /