【问题标题】:How to make visible and invisible the layout of custom adapter based on the value set-ted in the custom adapter如何根据自定义适配器中设置的值使自定义适配器的布局可见和不可见
【发布时间】:2016-01-12 07:30:42
【问题描述】:

在我的应用程序中,我有两个布局,其中底部布局的一些值将基于来自服务器的用户详细信息为空,我想让它们不可见,我正在使用自定义基本适配器来创建和设置布局视图文本视图的值请帮助解决此问题。我试过一些谷歌代码它不起作用。 我的适配器类如下

public class SuggestionForumTopicAdapter extends BaseAdapter{
    private ArrayList<SuggestionTopicsModel> _suggestionlistData;
    private LayoutInflater layoutInflater;
    SuggestionTopicsModel suggestion_topics_model;
    private Context _context;
    RelativeLayout relative_layout;
    public SuggestionForumTopicAdapter(Context context,ArrayList<SuggestionTopicsModel> listData){
        _suggestionlistData = listData;
        _context = context;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return _suggestionlistData.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return _suggestionlistData.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        if (layoutInflater == null)
            layoutInflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if(convertView == null){
            convertView = layoutInflater.inflate(R.layout.suggestion_custom_dispplay, null);
            holder = new ViewHolder();
            holder.suggestionPostName = (TextView) convertView.findViewById(R.id.suggestionPostName);
            holder.totalnumberofsuggest = (TextView) convertView.findViewById(R.id.totalnumberofsuggest);
            holder.dateofcreate = (TextView) convertView.findViewById(R.id.dateofcreate);
            holder.winnername=(TextView) convertView.findViewById(R.id.winner_name);

             relative_layout=(RelativeLayout) convertView.findViewById(R.id.winner_layout);

            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        suggestion_topics_model = (SuggestionTopicsModel) _suggestionlistData.get(position);

         holder.suggestionPostName.setText(suggestion_topics_model.getSuggestionText());

         //Log.i("inside adapter", suggestion_topics_model.getSuggestionText());

         holder.totalnumberofsuggest.setText(Integer.toString(suggestion_topics_model.getTopicsSuggestionCount()));

         //Log.i("inside adapter", suggestion_topics_model.getSuggestionTopicId());

         holder.dateofcreate.setText(suggestion_topics_model.getCreatedDate());


         Log.i("id", ""+suggestion_topics_model.getWinner());
         //Log.i("inside adapter", suggestion_topics_model.getCreatedDate());
        /* if (suggestion_topics_model.getWinner()==position) {
            relative_layout.setVisibility(View.GONE);
            convertView.setClickable(false);
            }*/
         if (suggestion_topics_model.getDispplayname()==null) {
             Log.i("name", suggestion_topics_model.getDispplayname());
             relative_layout.setVisibility(View.GONE);
        }else{
             holder.winnername.setText(suggestion_topics_model.getDispplayname());
             relative_layout.setVisibility(View.VISIBLE);

             Log.i("name", suggestion_topics_model.getDispplayname());
        }
        return convertView;
    }
    static class ViewHolder{

        TextView suggestionPostName;
        TextView totalnumberofsuggest;
        TextView dateofcreate;
        TextView winnername;
    }
}

【问题讨论】:

    标签: android android-custom-view viewcontroller android-cursoradapter custom-adapter


    【解决方案1】:

    试试下面的代码:

    public class SuggestionForumTopicAdapter extends BaseAdapter{
        private ArrayList<SuggestionTopicsModel> _suggestionlistData;
        private LayoutInflater layoutInflater;
        SuggestionTopicsModel suggestion_topics_model;
        private Context _context;
        RelativeLayout relative_layout;
        public SuggestionForumTopicAdapter(Context context,ArrayList<SuggestionTopicsModel> listData){
            _suggestionlistData = listData;
            _context = context;
        }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return _suggestionlistData.size();
        }
    
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return _suggestionlistData.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ViewHolder holder;
            if (layoutInflater == null)
                layoutInflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            if(convertView == null){
                convertView = layoutInflater.inflate(R.layout.suggestion_custom_dispplay, null);
                holder = new ViewHolder();
                holder.suggestionPostName = (TextView) convertView.findViewById(R.id.suggestionPostName);
                holder.totalnumberofsuggest = (TextView) convertView.findViewById(R.id.totalnumberofsuggest);
                holder.dateofcreate = (TextView) convertView.findViewById(R.id.dateofcreate);
                holder.winnername=(TextView) convertView.findViewById(R.id.winner_name);
    
                holder.relativeLayout=(RelativeLayout) convertView.findViewById(R.id.winner_layout);
    
                convertView.setTag(holder);
            }else{
                holder = (ViewHolder) convertView.getTag();
            }
            suggestion_topics_model = (SuggestionTopicsModel) _suggestionlistData.get(position);
    
             holder.suggestionPostName.setText(suggestion_topics_model.getSuggestionText());
    
             //Log.i("inside adapter", suggestion_topics_model.getSuggestionText());
    
             holder.totalnumberofsuggest.setText(Integer.toString(suggestion_topics_model.getTopicsSuggestionCount()));
    
             //Log.i("inside adapter", suggestion_topics_model.getSuggestionTopicId());
    
             holder.dateofcreate.setText(suggestion_topics_model.getCreatedDate());
    
    
             Log.i("id", ""+suggestion_topics_model.getWinner());
             //Log.i("inside adapter", suggestion_topics_model.getCreatedDate());
            /* if (suggestion_topics_model.getWinner()==position) {
                relative_layout.setVisibility(View.GONE);
                convertView.setClickable(false);
                }*/
             if (suggestion_topics_model.getDispplayname()==null) {
                 Log.i("name", suggestion_topics_model.getDispplayname());
                 holder.relativeLayout.setVisibility(View.GONE);
            }else{
                 holder.winnername.setText(suggestion_topics_model.getDispplayname());
                 holder.relativeLayout.setVisibility(View.VISIBLE);
    
                 Log.i("name", suggestion_topics_model.getDispplayname());
            }
            return convertView;
        }
        static class ViewHolder{
    
            TextView suggestionPostName;
            TextView totalnumberofsuggest;
            TextView dateofcreate;
            TextView winnername;
            RelativeLayout relativeLayout;
        }
    }
    

    【讨论】:

    • 结果是一样的
    • 每次进入 else 块如何避免这种情况
    • 请尝试修改后的代码。除了第一行之外,它将进入每一行的 else 块。它重用前一行来呈现下一行,当它这样做时,它会将前一个 convertView 作为参数传递。这不是问题。
    【解决方案2】:

    对于上述问题,我只需更改以下代码即可找到解决方案

     if (suggestion_topics_model.getDispplayname().contains("null")){
                 Log.i("name inside the else ", suggestion_topics_model.getDispplayname());
                 holder.relativeLayout.setVisibility(View.GONE);
            }else{
    
                 holder.winnername.setText(suggestion_topics_model.getDispplayname());
                 holder.relativeLayout.setVisibility(View.VISIBLE);
                 Log.i("name", suggestion_topics_model.getDispplayname());
    
            }
            return convertView;
        }
        static class ViewHolder{
    
            TextView suggestionPostName;
            TextView totalnumberofsuggest;
            TextView dateofcreate;
            TextView winnername;
            RelativeLayout relativeLayout;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      相关资源
      最近更新 更多