2015-09-21 2 views
0

У меня есть выпадающий список в моем макете, чтобы отфильтровать мои списки, я использую метод onOptionsItemSelected для фильтрации своих списков, теперь я успешно фильтрую мои EventListviewes с помощью метода displayEventList(). Но, к сожалению, отфильтрованное listview не отображается в макете (после операции фильтра фильтра событий, который может не отображаться в макете), пожалуйста, помогите мне решить эту проблему.Пустой список отображается после выполнения операции фильтра

public boolean onOptionsItemSelected(MenuItem item) { 
     Log.d("onOptionsItemSelected", "yes"); 

     switch (item.getItemId()) { 
      case R.id.all: 
       displayEventInvitationList(inflater, container,savedInstanceState); 
       return true; 
      case R.id.event: 
       displayEventList(inflater, container,savedInstanceState); 
       return true; 
      case R.id.invitation: 
       displayInvitationList(inflater, container,savedInstanceState); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 

     } 

    } 

    public View displayEventList(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     view = inflater.inflate(R.layout.chatwindow_tab, container, false); 
     context = getActivity().getApplicationContext(); 
     sharedpreferences = context.getSharedPreferences(Constants.SHARED_PREFERENCE_NAME, 
       Context.MODE_PRIVATE); 
     DatabaseHelper dbHelper = new DatabaseHelper(context); 
     userMO = dbHelper.getRingeeUserData(1); 
     new AsyncTask<Void, Void, List<EventMO>>() { 
      @Override 
      protected List<EventMO> doInBackground(Void... arg0) { 
       eventMOs = gson.fromJson(eventDelegates.getAllEventFromUser(userMO, context), new TypeToken<List<EventMO>>() { 
       }.getType()); 
       List<EventMO> groupEventList = new ArrayList<>(); 
       for (EventMO eventMO : eventMOs) { 
        groupEventList.add(eventMO); 

       } 
       return groupEventList;//it returns Eventlist 
      } 

      @Override 
      protected void onPostExecute(List<EventMO> groupEventList) { 
       groupEventMoList = groupEventList; 
       chatDisplayAdapter = new ChatDisplayAdapter(); 
       groupEventView.setAdapter(chatDisplayAdapter); 
       groupEventView.setItemsCanFocus(true); 
       groupEventView.setTextFilterEnabled(true); 
       groupEventView.setOnItemClickListener(groupEventView.getOnItemClickListener()); 
      } 

     }.execute(null, null, null); 
     return view; 
    } 
     private class ChatDisplayAdapter extends BaseAdapter { 

     private LayoutInflater mInflater; 
     public ChatDisplayAdapter() { 
      mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

     @Override 
     public int getCount() { 
      return groupEventMoList.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      return groupEventMoList.get(position); 
     } 

     @Override 
     public long getItemId(int id) { 
      // for sqllite management 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.chatwindow, null); 
       convertView.setClickable(true); 
       convertView.setFocusable(true); 
       chatTitle = (TextView) convertView.findViewById(R.id.chat_title); 
       chatPlace = (TextView) convertView.findViewById(R.id.event_place); 
       chatDate = (TextView) convertView.findViewById(R.id.event_date); 
       chatPlace.setText(groupEventMoList.get(position).getPlace()); 
       String actualDate = groupEventMoList.get(position).getEventDate(); 
       //chatDate.setText(groupEventMoList.get(position).getEventDate()); 
       try { 
        //date format changed here 
        Date formatDate = new SimpleDateFormat("yyyy-MM-dd").parse(actualDate); 
        dateResult = new SimpleDateFormat("dd-MM-yyyy").format(formatDate); 
       } catch (ParseException e) { 

        e.printStackTrace(); 
       } 
       chatDate.setText(dateResult); 
       chatTitle.setText(groupEventMoList.get(position).getText()); 
       convertView.setTag(position); 
       View v = convertView.findViewById(R.id.chat_window_single); 
       v.getRootView().setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Log.i("position", v.getTag().toString()); 
         Intent groupAct = new Intent(context, GroupChatActivity.class); 
         groupAct.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         groupAct.putExtra("eventMo", groupEventMoList.get(Integer.parseInt(v.getTag().toString()))); 
         startActivity(groupAct); 
        } 

       }); 
      } 
      return convertView; 
     } 

    } 

} 
+0

Вы устанавливаете адаптер дважды, последние set: groupEventView.setAdapter (dataAdapter) ;. Что такое dataAdapter? – Carnal

+0

Я ошибаюсь chatdisplayadapter - это только я использую .. теперь я редактирую свой код .. –

+0

Какая польза от раздувания зрения здесь. Вы не использовали завышенный вид? – arun

ответ

0

для фильтрации Установить адаптер с обновляемым списком и вызвать notifyDataSetChanged() на Adpater

ChatDisplayAdapter chatDisplayAdapter =new ChatDisplayAdapter(groupEventList); 
chatDisplayAdapter.notifyDataSetChanged(); 

ChatDisplayAdpater.java

private class ChatDisplayAdapter extends BaseAdapter<EventMO> { 

     private LayoutInflater mInflater; 
     List<EventMO> groupEventMoList; 
     public ChatDisplayAdapter(List<EventMO> datagroupEventMoList) { 
      mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     groupEventMoList=datagroupEventMoList; 
     } 

     @Override 
     public int getCount() { 
      return groupEventMoList.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      return groupEventMoList.get(position); 
     } 

     @Override 
     public long getItemId(int id) { 
      // for sqllite management 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.chatwindow, null); 
       convertView.setClickable(true); 
       convertView.setFocusable(true); 
       chatTitle = (TextView) convertView.findViewById(R.id.chat_title); 
       chatPlace = (TextView) convertView.findViewById(R.id.event_place); 
       chatDate = (TextView) convertView.findViewById(R.id.event_date); 
       chatPlace.setText(groupEventMoList.get(position).getPlace()); 
       String actualDate = groupEventMoList.get(position).getEventDate(); 
       //chatDate.setText(groupEventMoList.get(position).getEventDate()); 
       try { 
        //date format changed here 
        Date formatDate = new SimpleDateFormat("yyyy-MM-dd").parse(actualDate); 
        dateResult = new SimpleDateFormat("dd-MM-yyyy").format(formatDate); 
       } catch (ParseException e) { 

        e.printStackTrace(); 
       } 
       chatDate.setText(dateResult); 
       chatTitle.setText(groupEventMoList.get(position).getText()); 
       convertView.setTag(position); 
       View v = convertView.findViewById(R.id.chat_window_single); 
       v.getRootView().setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Log.i("position", v.getTag().toString()); 
         Intent groupAct = new Intent(context, GroupChatActivity.class); 
         groupAct.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         groupAct.putExtra("eventMo", groupEventMoList.get(Integer.parseInt(v.getTag().toString()))); 
         startActivity(groupAct); 
        } 

       }); 
      } 
      return convertView; 
     } 

    } 
+0

ok дайте мне попробовать. –

Смежные вопросы