2014-11-07 44 views
0

我正在製作消息應用程序。到目前爲止,一切都很好,但是我還沒有想出如何在新消息從另一個活動到達時更新列表視圖。我希望這樣,如果消息到達,如果用戶在消息屏幕上,它將更新列表視圖以顯示新消息。如何使用來自其他活動的自定義適配器更新列表視圖?

事實上,用戶必須重新打開應用程序才能查看新消息。我想弄清楚現在如何自動刷新或更新當前的列表視圖。

我MessageAdapter如下:

public class MessageAdapter extends BaseAdapter { 
// This is the custom adapter for displaying the labdetails in listview of a 
// dialog inside the activity 
String picsDownloadFolder = Environment.getExternalStorageDirectory() + "/" 
     + "Congress" + "/", imageLinkBuilder; 
private Activity activity; 

private LayoutInflater inflater = null; 
private List<MessageModel> data; 
int myPosition; 
int totalNumAttackers = 0, totalNumDamage = 0; 
public Boolean bb[]; 
int element; 
DbUtils dbutil; 

File LocImageFile; 
WindowManager.LayoutParams WMLP; 
List<UserModel> notificationList = new ArrayList<UserModel>(); 

public MessageAdapter(Activity a, List<MessageModel> notifyList) { 

    activity = a; 

    inflater = (LayoutInflater) activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    dbutil = new DbUtils(); 
    // notificationList = notifyList; 
    data = notifyList; 

} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return data.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; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

    ViewHolder viewHolder; 
MessageModel array = data.get(position); 
    if (convertView == null) { 
     viewHolder = new ViewHolder(); 
     convertView = inflater.inflate(R.layout.message_item, null); 
     viewHolder.left =(LinearLayout)convertView.findViewById(R.id.left); 
     viewHolder.right =(LinearLayout)convertView.findViewById(R.id.right); 
     viewHolder.txt1 = (TextView) convertView 
       .findViewById(R.id.textView1); 
     viewHolder.txt3 = (TextView) convertView 
       .findViewById(R.id.textView3); 
     viewHolder.txt2 = (TextView) convertView 
       .findViewById(R.id.textView2); 
     viewHolder.txt4 = (TextView) convertView 
       .findViewById(R.id.textView4); 

     convertView.setTag(viewHolder); 


    } else { 
     // prevent recycling of views 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    if (array.gettype().equals("received")) { 
     viewHolder.right.setVisibility(View.INVISIBLE); 
     viewHolder.left.setVisibility(View.VISIBLE); 
     viewHolder.txt1.setText(array.getmsg()); 
     viewHolder.txt3.setText(array.getdate()); 
    } if (array.gettype().equals("sent")) { 
     viewHolder.left.setVisibility(View.INVISIBLE); 
     viewHolder.right.setVisibility(View.VISIBLE); 
     viewHolder.txt2.setText(array.getmsg()); 
     viewHolder.txt4.setText(array.getdate()); 
    } 

    return convertView; 
} 

// view holder class 
public static class ViewHolder { 

LinearLayout left,right; 
TextView txt1,txt3,txt2,txt4; 

} 

} 

我已經嘗試使用:

mListView.setAdapter(mAdapter); 

但它一直強制關閉應用程序。

回答

0

呼叫

mAdapter.notifyDataSetChanged(); 
相關問題