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);
但它一直強制關閉應用程序。