我正在使用以下来填充我的列表视图,如果我点击btn_Delete,我不想显示项目,我成功从hasValues中删除了项目,但它显示了listview中的空白项目,
我想从列表中删除此空白列表视图项。
如果有人知道怎么做,请回复。
谢谢,
private class MyArrayAdapter extends ArrayAdapter
{
private List<HashMap<String, String>> myData = new ArrayList<HashMap<String, String>>();
public MyArrayAdapter(Context context, int textViewResourceId, List<HashMap<String, String>> objects)
{
super(context, textViewResourceId, objects);
context = getContext();
myData = objects;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View v = convertView;
try
{
if(v == null)
{
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.listSomeThing, null);
}
if(hasValues != null && !hasValues.get(DatabaseConstant.key_STATUS).equals("D"))
{
btn_Delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// delete item from HasValues..
}
}
else
{
v.setVisibility(View.GONE);
}
}
catch (Exception e)
{
Utility.saveExceptionDetails(LogsDetails.this, e);
e.printStackTrace();
}
return v;
}
}
答案 0 :(得分:6)
您需要将其从数组myData
中删除,然后再拨打ListView适配器上的notifyDataSetChanged
。
否则将调用getView并填充列表项,如果有hasValues
,则会返回视图。 (不要试图返回null - 它不起作用)。
答案 1 :(得分:0)
您可以创建将从列表中删除项目的方法,然后通知适配器数据已更改。
btn_Delete.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
deleteItemAtId(position);
}
};
然后创建此方法:
void deleteItemAtId(int id)
{
myData.remove(id);
// This ensure that getView is called again
notifyDataSetChanged();
}
答案 2 :(得分:0)
从自定义视图活动的列表中删除元素,并将其存储到某个临时列表,并将该临时列表传递给自定义适配器。您无法在自定义适配器中执行任何操作。