दिलचस्प पोस्ट
त्रुटि: '..' में सदस्य '..' के लिए अनुरोध जो कि गैर-वर्ग प्रकार का है आरजीबी रंग रूपांतरण के लिए एचएसएल कंपाइलर त्रुटि: उद्देश्य-सी चयनकर्ता के साथ एक ही उद्देश्य-सी चयनकर्ता के साथ पिछले घोषणा के साथ विधि सी # का प्रयोग कर एंटीवायरस को विंडोज़ पर खोजें document.getElementById बनाम jQuery $ () क्लास में 'स्टैटिक' कीवर्ड क्या करता है? निष्पादन को कैसे रोकें, नींद, आर में एक्स सेकंड की प्रतीक्षा करें? अपने गुणों के आधार पर सरणी के तत्व का सूचकांक प्राप्त करना DropDownListFor संपादक में टेम्पलेट मूल्य का चयन नहीं मैं एक स्विफ्ट अर्रे को स्ट्रिंग में कैसे बदलूं? JUnit भ्रम: उपयोग 'TestCase' या '@Test' फैली? वहाँ node.js में json के लिए एक आवश्यकता है गिटहब पर मूल और अपस्ट्रीम के बीच अंतर क्या है? तत्काल फ़ंक्शन अभिविन्यास सिंटैक्स अधिक सुरुचिपूर्ण "ps aux | grep -v grep "

एंड्रॉइड सूची दृश्य ताज़ा करें

मेरे पास एक सूचीदृश्य है जो मुझे एक डेटा के माध्यम से कुछ डेटा दिखा रहा है (जो दूसरे वर्ग में है और मैं इसे ऑब्जेक्ट के माध्यम से एक्सेस कर रहा हूं)।

जब भी मैं सूची मेनू से संदर्भ मेनू के माध्यम से किसी तत्व को हटा देता हूं, तो सूची ताज़ा नहीं होती है, लेकिन तत्व सरणी से हटा दिया जाता है। मैं यह दिखाने के लिए सूची को कैसे ताज़ा कर सकता हूँ?

कोड:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { if (v.getId()==R.id.mainListView) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; post=info.position; menu.setHeaderTitle(stocks[info.position]); String[] menuItems = stt; for (int i = 0; i<menuItems.length; i++) { menu.add(Menu.NONE, i, i, menuItems[i]); } } } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); int menuItemIndex = item.getItemId(); String[] menuItems = stt; String menuItemName = menuItems[menuItemIndex]; listItemName = stocks[info.position]; stockname.remove(post-1); return true; } 

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड सूची दृश्य ताज़ा करें"

आपको अपने ListView एडाप्टर को सूचित करना होगा जो डेटा बदल गया है।

 listViewAdapater.notifyDataSetChanged(); 

अगर किसी कारण के लिए यह काम नहीं करता है और कुछ विचित्र स्थितियां हैं जहां ऐसा लगता है कि यह अधिसूचना नहीं दे रहा है, तो आप अपने एडेप्टर को अपडेट किए गए सरणी के साथ कन्स्ट्रक्टर के माध्यम से फिर से भेज सकते हैं।

मेरे पास notifyDataSetChanged() नहीं notifyDataSetChanged() विधि (एंड्रॉइड 2.3)।

निम्नलिखित मेरे लिए काम किया:

 getListView().invalidate(); 

मेरे मामले में मैंने पूरे एडेप्टर को बदल दिया है और यह अभी भी ताज़ा नहीं हुआ है, इसलिए मेरे लिए ऊपर वर्णित विधि ही एकमात्र कार्य समाधान है।

GetListView () की कोशिश करें refreshDrawableState

  private static ArrayList<Radio> m_streamsList; final ListView listView = (ListView) rootView.findViewById(R.id.stream_listRS); //my class where i insert data into my array m_myDBHelp = new DBHelper(); m_streamsList = m_myDBHelp.selectStreamsList(); // my list adapter - this is a class created by me RadioAdapter adapt = new RadioAdapter(context, m_streamsList); listView.setAdapter(adapt); ////////////------------- so . when i inserted a row in db, i need to refresh the list m_myDBHelp.insertStreamIntoDB(String name, String url); /// in my case method invalidate works fine listView.invalidate(); m_streamsList = null; m_streamsList = m_myDBHelp.selectStreamsList(); //you need to set adapter again RadioAdapter adapt2 = new RadioAdapter(context, m_streamsList); listView.setAdapter(adapt2); import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.example.npopa.musicplayern.R; import com.example.npopa.musicplayern.Radio; import java.util.ArrayList; public class RadioAdapter extends BaseAdapter{ private ArrayList<Radio> m_streams; private LayoutInflater m_stramInf; public RadioAdapter(Context c, ArrayList<Radio> theStreams){ m_streams = theStreams; m_stramInf = LayoutInflater.from(c); } @Override public int getCount() { return m_streams.size(); } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { //map to radio_s layout LinearLayout streamLay = (LinearLayout) m_stramInf.inflate(R.layout.all_songs_t, parent, false); TextView name = (TextView) streamLay.findViewById(R.id.song_title); TextView url = (TextView) streamLay.findViewById(R.id.song_artist); ImageView imgALb = (ImageView) streamLay.findViewById(R.id.albumicon); //get all_songs_t using position Radio currStream = m_streams.get(position); name.setText(currStream.getName()); url.setText(currStream.getUrl()); imgALb.setImageResource(R.drawable.radio_stream); //set position as tag streamLay.setTag(position); return streamLay; } 

}

 public class Radio { private int id; private String name; private String url; public Radio(int id, String name, String url) { this.id = id; this.name = name; this.url = url; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } } 

सूची मेरे लिए ताज़ा: listView.invalidateViews();

यह करता है:

 mDataChanged = true; rememberSyncState(); requestLayout(); invalidate(); 

कुछ सूची आइटम को हटाने या एक ही बार में सभी तत्वों को हटाने के लिए मामला।

एपीआई 24 में परीक्षण किया गया