हाय कैसे listView
अद्यतन करने के लिए जब वापस एक और गतिविधि में दबाया। मैं डेटाबेस का उपयोग कर रहा हूं, जहां मैं अकेले दबाए गए एक Activity
में विशेष पंक्ति को हटा रहा हूं, यह अपडेट नहीं हो रहा है। जब मैं किसी अन्य गतिविधि या ऐप पर स्विच करता हूं और इसे खोलता हूं तो यह ठीक काम कर रहा है जहां listView
अपडेट हो जाता है।किसी अन्य गतिविधि एंड्रॉइड से दबाए जाने पर सूचीदृश्य को कैसे अपडेट करें?
कोड है ..
public class FragmentLiveChats extends Fragment {
private AdapterLiveChat adapterChatHistory;
private List<LiveChatDetails> customerDetail;
private ListView mListView;
private List<LiveChatDetails> list;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
list =AAEDatabaseHelper.getLiveChatDetails(Constants.TABLE_LIVE_CHAT);
mListView = (ListView) rootView.findViewById(R.id.list_chat_history);
parseResponse();
}
private void parseResponse(){
for(int i=0;i<list.size();i++){
LiveChatDetails chatDetailsList = new LiveChatDetails();
chatDetailsList.setId(list.get(i).getId());
chatDetailsList.setFromUsername(list.get(i).getFromUsername());
chatDetailsList.setChatTime(list.get(i).getChatTime());
chatDetailsList.setLatMsg(list.get(i).getLatMsg());
customerDetail.add(chatDetailsList);
}
setValuesInAdapter();
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
adapterChatHistory.updateList(customerDetail);
adapterChatHistory.notifyDataSetChanged();
}
private void setValuesInAdapter() {
if (adapterChatHistory == null) {
adapterChatHistory = new AdapterLiveChat(context);
}
adapterChatHistory.setExpertData(customerDetail);
if (customerDetail != null && !customerDetail.isEmpty()) {
mListView.setVisibility(View.VISIBLE);
viewNoData.setVisibility(View.GONE);
mListView.setAdapter(adapterChatHistory);
} else {
mListView.setVisibility(View.GONE);
viewNoData.setVisibility(View.VISIBLE);
}
adapterChatHistory.notifyDataSetChanged();
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
LiveChatDetails chatDetails = (LiveChatDetails) parent.getAdapter()
.getItem(position);
Log.e("chatDetails", "chat details"+chatDetails.getId());
Intent intent = new Intent(context,ActivityExpertChatView.class);
intent.putExtra(Constants.CHAT_USER_NAME, chatDetails.getId());
startActivity(intent);
}
});
}
अनुकूलक में:
public void setExpertData(List<LiveChatDetails> mTempData) {
this.mTempData = mTempData;
}
ExpertChatView
गतिविधि में, मैं एक रिकॉर्ड को हटाने कर रहा हूँ और अगर मैं इस स्क्रीन पर आते हैं, यानी, वापस द्वारा पिछले गतिविधि दबाएं, यह अभी भी वही सूची बना हुआ है और यह अपडेट नहीं हो रहा है। लेकिन जब मैं ऐप बंद करता हूं और खोलता हूं, तो यह ठीक काम कर रहा है।
expertChatView गतिविधि में, मैं उपयोगकर्ता नाम रिकॉर्ड को हटाने कर रहा हूँ।
AAEDatabaseHelper.deleteUsername(<username>);
मैं onResume()
लेकिन अभी भी एक ही अंक में notifyDatasetChanged
विधि का उपयोग कर की कोशिश की।
संपादित
Adapter class
public class AdapterLiveChat extends BaseAdapter {
private Context context;
private List<LiveChatDetails> mTempData;
private LayoutInflater mInflater;
private LiveChatDetails liveChatDetails;
private View adView;
private ViewHolder holder;
private String userImageUrl;
public AdapterLiveChat(Context context) {
this.context = context;
imgLoader = Picasso.with(context);
mCalendar = Calendar.getInstance();
}
public void setExpertData(List<LiveChatDetails> mTempData) {
this.mTempData = mTempData;
}
public void updateList(List<LiveChatDetails> mChatDetails) {
this.mTempData = mChatDetails;
}
@Override
public int getCount() {
return mTempData.size();
}
@Override
public LiveChatDetails getItem(int position) {
return mTempData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
liveChatDetails = getItem(position);
adView = convertView;
if (adView == null) {
holder = new ViewHolder();
adView = mInflater.inflate(R.layout.row_live_chats, null);
holder.txtName = (CustomTextView) adView
.findViewById(R.id.txt_name);
adView.setTag(holder);
} else
holder = (ViewHolder) adView.getTag();
holder.txtName.setText(liveChatDetails.getFromUsername());
return adView;
}
// दृश्य धारक वर्ग यहाँ ...
जाहिर notifyDatasetChanged कुछ जादू की छड़ी नहीं है ... यदि आप इसे मदद नहीं करेगा अंतर्निहित डेटा को संशोधित नहीं है ... – Selvin
आपके पास कॉल NotifyDataSetChanged() – Chol
सूचीदृश्य के एडाप्टर के लिए अपने अपडेट डेटा जोड़ने और backpress –