Как пропустить один вид из списка? - PullRequest
3 голосов
/ 06 февраля 2012

Я использую следующее для заполнения списка и не хочу отображать элемент, если я нажал на 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;
        }
    }

Ответы [ 3 ]

6 голосов
/ 06 февраля 2012

Вам необходимо удалить его из массива myData, а затем вызвать notifyDataSetChanged на адаптере ListView.
В противном случае будет вызван getView и будет заполнен элемент списка, если есть hasValues или нет, потому что будет возвращено представление. (Вместо этого не пытайтесь вернуть ноль - это не сработает).

0 голосов
/ 26 мая 2012

Удалите элемент из списка в пользовательском просмотре, сохраните его в каком-либо временном списке и передайте этот временный список в пользовательский адаптер. Вы не можете ничего сделать в пользовательском адаптере.

0 голосов
/ 06 февраля 2012

Вы можете создать метод, который будет удалять элементы из вашего Списка, а затем информировать Adapter об изменении данных.

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