如何从列表视图中跳过一个视图?

时间:2012-02-06 14:32:30

标签: android list android-arrayadapter

我正在使用以下来填充我的列表视图,如果我点击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;
        }
    }

3 个答案:

答案 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)

从自定义视图活动的列表中删除元素,并将其存储到某个临时列表,并将该临时列表传递给自定义适配器。您无法在自定义适配器中执行任何操作。