【问题标题】:How to skip one view from listview?如何从列表视图中跳过一个视图?
【发布时间】:2012-02-28 00:30:37
【问题描述】:

我正在使用以下内容来填充我的列表视图,并且如果我单击 btn_Delete,我不想显示项目,我已成功从 hasValues 中删除了项目,但它显示了列表视图中的空白项目,
我想从列表中删除这个空白列表视图项。
如果有人知道如何做到这一点,请回复。
谢谢,

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;
        }
    }

【问题讨论】:

  • 我认为这不是为此目的的最佳解决方案。只需尝试设置您的具体条件并增加您在 getView 中的位置数。

标签: android list android-arrayadapter


【解决方案1】:

您需要将其从您的数组 myData 中删除,然后在您的 ListView 适配器上调用 notifyDataSetChanged
否则会调用getView并填充List Item,如果有hasValues,则返回View。 (不要尝试返回 null - 它不起作用)。

【讨论】:

    【解决方案2】:

    您可以创建从列表中删除项目的方法,然后通知适配器数据已更改。

    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();
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多