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);
}
Try this way,hope this will help you to solve your problem.
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 messages.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if(view==null){
viewHolder = new ViewHolder();
view = LayoutInflater.from(context).inflate(R.layout.chat_list_item, viewGroup, false);
viewHolder.rightView = (TextView)view.findViewById(R.id.rightAligned);
viewHolder.leftView = (TextView)view.findViewById(R.id.leftAligned);
}else{
viewHolder = (ViewHolder) view.getTag();
}
if(messages.get(i).getFrom().equals(UserInfo.getMobileNumber())){
viewHolder.rightView.setText(messages.get(i).getMessage());
viewHolder.leftView.setVisibility(View.GONE);
viewHolder.rightView.setVisibility(View.VISIBLE);
}else{
viewHolder.leftView.setText(messages.get(i).getMessage());
viewHolder.rightView.setVisibility(View.GONE);
viewHolder.leftView.setVisibility(View.VISIBLE);
}
return view;
}
class ViewHolder{
TextView rightView;
TextView leftView;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.