2016-07-20 2 views
-2

У меня этот класс расширяет значения отображения базового адаптера. Ниже правильное рабочее затмение. но я недавно созданный проект, использующий Androi Studio там, этот код getview не звонит или не работает. Я также проверяю getcount. Доступные значения getcount.getView не вызвал класс baseAdapter с помощью Android Studio

public class CustomAdapterChatActivity extends BaseAdapter { 
    ArrayList<ChatUsersDetailsBean> mBeans = new ArrayList<ChatUsersDetailsBean>(); 
    Context mcontext; 
    LayoutInflater inflater; 
    CommonUtil commonUtil; 
    public CustomAdapterChatActivity(Context context, 
      ArrayList<ChatUsersDetailsBean> mBeans) { 
     // TODO Auto-generated constructor stub 
     mcontext = context; 
     this.mBeans = mBeans;  
     commonUtil = new CommonUtil(context); 
     inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
    }   
    @Override 
    public int getCount() { 
     return mBeans.size(); 
    }   
    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    }   
    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    }  
    public class Holder { 
     TextView name; 
     TextView content; 
    }   
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     Log.e("getView",""+"getView"); 
     if (convertView == null) { 
      convertView = inflater.inflate(
        R.layout.chat_listview_layout_screen, null); 
     } 
     setAttributes(position, convertView); 

     convertView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub     
       click(position); 
      } 
     }); 
     return convertView; 
    }   
    public void click(int position) { 
     Intent mintent = new Intent(mcontext, ChatViewBackgroundActivity.class); 
     mintent.putExtra("name", mBeans.get(position).getOpponent_name()); 
     ((ChatActivity) mcontext).startActivityForResult(mintent, 1); 
    } 
    public void setAttributes(final int position, View convertView) { 
     Holder holder = new Holder();  
     holder.imgdispatcher = (ImageView) convertView 
       .findViewById(R.id.chat_list_iv_profilepic); 
    } 

Пожалуйста, помогите мне. Я борюсь с этой частью. Ошибка не будет отображаться. Я проверяю запуск getview или нет, что время getview не работает в любое время. этот код любые изменения, необходимые

ответ

0

Измените метод GetView() в классе адаптера, как показано ниже код:

public View getView (final int position, View convertView, ViewGroup parent){ 
    if(convertView == null){ 
     //We must create a View: 
     convertView = inflater.inflate(R.layout.my_list_item, parent, false); 
    } 
    //Here we can do changes to the convertView 
    return convertView; 
} 

При добавлении новых завышенные зрения, попытаться избежать передачи нуль, как вид корня. Lint теперь предупредит вас о том, чтобы не передавать значение null для root. Ваше приложение не будет разбиваться в этом сценарии, но оно может плохо работать. Когда ваш Child View не знает правильные LayoutParams для его корневой ViewGroup, он попытается определить их самостоятельно, используя generateDefaultLayoutParams.

+0

Спасибо за ваш ответ. я изменить код, но никаких изменений в выполнении , если (convertView == NULL) { \t \t \t convertView = inflater.inflate ( \t \t \t \t \t R.layout.chat_listview_layout_screen, родитель, ложь); \t \t} –

+0

Метод getView i print log.e, он не печатается. Я думаю, что метод getview не работает полностью –

+0

@AbiK Проверьте свой класс Holder. Вы не объявляли imgdispatcher ImageView в классе Holder и TextView, содержимое TextView не инициализировано с помощью метода findViewById() в методе setAttributes(). Попытайтесь это исправить. – Sathiamour

0

@AbiK Если вы уже сделали это, как я уже упоминал выше, используйте нижеприведенный код модифицированного метода getView() и setAttributes(). Надеюсь, это сработает для вас.

 public class CustomAdapterChatActivity extends BaseAdapter { 
     ArrayList<ChatUsersDetailsBean> mBeans; 
     Context mcontext; 
     LayoutInflater inflater; 
     CommonUtil commonUtil; 

     public CustomAdapterChatActivity(Context context, 
             ArrayList<ChatUsersDetailsBean> mBeans) { 
      mcontext = context; 
      this.mBeans = mBeans; 
      commonUtil = new CommonUtil(context); 
     } 

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

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

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     public class Holder { 
      TextView name; 
      TextView content; 
      ImageView imgdispatcher; 
     } 

     public Holder setAttributes(final int position, View convertView) { 
      Holder holder = new Holder(); 
      holder.imgdispatcher = (ImageView) convertView.findViewById(R.id.chat_list_iv_profilepic); 
      // holder.name=(TextView)convertView.findViewById(R.id.); // declare Id 
      // holder.content=(TextView)convertView.findViewById(R.id.); // declare Id 
      return holder; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      Holder holder = null; 
      LayoutInflater inflater = (LayoutInflater) 
        mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      if (convertView == null) { 
       convertView = inflater.inflate(R.layout.chat_listview_layout_screen, parent, false); 
       holder = setAttributes(position, convertView); 
       convertView.setTag(holder); 
      } else { 
       holder = (Holder) convertView.getTag(); 
      } 
      convertView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        click(position); 
       } 
      }); 
      return convertView; 
     } 

     public void click(int position) { 
      Intent mintent = new Intent(mcontext, ChatViewBackgroundActivity.class); 
      mintent.putExtra("name", mBeans.get(position).getOpponent_name()); 
      ((ChatActivity) mcontext).startActivityForResult(mintent, 1); 
     } 


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