I have created an adapter which extends the BaseAdapter. Following is the class:
class LocalAdapter extends BaseAdapter{
private Context context;
public LocalAdapter(Context ctx){
context=ctx;
}
@Override
public int getCount() {
return messages.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.chat_list_item,viewGroup,false);
}
TextView rightView = (TextView)view.findViewById(R.id.rightAligned);
TextView leftView = (TextView)view.findViewById(R.id.leftAligned);
if(messages.get(i).getFrom().equals(UserInfo.getMobileNumber())){
rightView.setText(messages.get(i).getMessage());
leftView.setVisibility(View.GONE);
}
else{
leftView.setText(messages.get(i).getMessage());
rightView.setVisibility(View.GONE);
}
return view;
}
}
The adapter can access the ArrayList from the main class. It has around 30 items. Now when I load the List all the items are loaded, but when scrolling through the list, some items get on disappearing on scroll.
Please provide solution for it.
You are probably not calling setVisiblity(View.VISIBLE) only hiding view, fix it this way:
if (messages.get(i).getFrom().equals(UserInfo.getMobileNumber())){
rightView.setText(messages.get(i).getMessage());
leftView.setVisibility(View.GONE);
rightView.setVisibility(View.VISIBLE);
} else {
leftView.setText(messages.get(i).getMessage());
rightView.setVisibility(View.GONE);
leftView.setVisibility(View.VISIBLE);
}