-1

В моем приложении у меня есть два макета, в котором нижний макет какое-то значение будет нулевым на основе сведений пользователя с сервера Я хочу сделать невидимыми, которые являются нулевыми, я использую настраиваемый базовый адаптер для создания и установки значения в текстовое представление вида макета, пожалуйста, помогите в этом вопросе. Я пробовал код Google, который не работает. мой адаптер Calss выглядит следующим образомКак сделать видимым и невидимым расположение пользовательского адаптера на основе значения, установленного в пользовательском adpater

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

ответ

0

Попробуйте следующий код:

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

это то же самое результат –

+0

каждый раз, когда он идет внутрь блока else, как этого избежать –

+0

, пожалуйста, попробуйте изменить код. Он будет входить в блок else для каждой строки, кроме первой. Он повторно использует предыдущую строку для отображения следующего, когда он делает это в предыдущем преобразовании в качестве аргумента. Это не проблема. –

0

для вышеуказанной проблемы я нашел решение, просто изменив следующий код

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

, который совпадает с моим ответом ... –