Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to update a custom baseadapter after onListItemClick ?
    text
    copied!<p>When a user clicks on a list I need a way to update MyCustomAdapter such that a hash key,value pair is removed and the list is updated. </p> <p>I'm really stuck down in onListItemClick can you help </p> <p>thanks graham</p> <pre><code>protected void onListItemClick(ListView l, View v, int position, long id) { //TODO Auto-generated method stub Toast.makeText(getApplicationContext(),"SHORT click" , Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(),"DATA is" + map.entrySet() , Toast.LENGTH_LONG).show(); //NAME,VALUE //remove the key,value pair and update CustomAdapter ????? //end of remove entries from hashmap map } package telephone.org; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import telephone.org.MyService.LocalBinder; import android.app.ActivityManager; import android.app.ListActivity; import android.app.ActivityManager.RunningServiceInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.IBinder; import android.provider.ContactsContract; import android.provider.ContactsContract.PhoneLookup; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemLongClickListener; //class 1 public class DynamicLists extends ListActivity { MyService mService; boolean mBound = false; //class 2 /////////////////////////////////// public class MyCustomAdapter extends BaseAdapter { public HashMap&lt;String, Integer&gt; mData = new HashMap&lt;String,Integer&gt;(); private String[] mKeys; //constructor public MyCustomAdapter(DynamicLists dynamicLists, int row, HashMap&lt;String, Integer&gt; map){ mData = map; mKeys = mData.keySet().toArray(new String[map.size()]); Log.d(TAG, "INSIDE ADAPTER constructor HELLO WORLD " + map.entrySet()); } public MyCustomAdapter(MyService mService, int row, Object map) { // TODO Auto-generated constructor stub } @Override public View getView(int position, View convertView, ViewGroup parent) { //TODO Auto-generated method stub Log.d(TAG, "inside getview "); View row=convertView; if (row==null){ LayoutInflater inflater=getLayoutInflater(); row=inflater.inflate(R.layout.row, null); } TextView label =(TextView)row.findViewById(R.id.blocked); label.setText(mKeys[position] + " " + getItem(position).toString()); //key + value return row; } @Override public int getCount() { // TODO Auto-generated method stub return mData.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub Log.d(TAG, "inside getitem " + mData.get(mKeys[position])); return mData.get(mKeys[position]); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } } //end of class 2 //////////////////////// private static final String TAG = "DynamicList"; //class 1 public static HashMap&lt;String, Integer&gt; map = new HashMap&lt;String, Integer&gt;(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { //TODO Auto-generated method stub Toast.makeText(getApplicationContext(),"SHORT click" , Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(),"DATA is" + map.entrySet() , Toast.LENGTH_LONG).show(); //NAME,VALUE //remove the name,value pair //end of remove entries from hashmap map } @Override public void onStart() { super.onStart(); isMyServiceRunning(); } public void onStop() { super.onStop(); // Unbind from the service if (mBound) { unbindService(mConnection); mBound = false; } } private boolean isMyServiceRunning() { ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if ("telephone.org.MyService".equals(service.service.getClassName())) { //Toast.makeText(getApplicationContext(),"SERVICE IS RUNNING", Toast.LENGTH_LONG).show(); Intent intent = new Intent(this, MyService.class); bindService(intent, mConnection, Context.BIND_AUTO_CREATE); //SEE INTERACT WITH SERVICE BELOW return true; } } Toast.makeText(getApplicationContext(),"SERVICE IS STOPPED AND IS NOT RUNNING", Toast.LENGTH_LONG).show(); return false; } //INTERACT WITH SERVICE /** Defines callbacks for service binding, passed to bindService() */ private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { // We've bound to LocalService, cast the IBinder and get LocalService instance LocalBinder binder = (LocalBinder) service; mService = binder.getService(); mBound = true; Set&lt;Entry&lt;String, Integer&gt;&gt; whatsup = mService.getNumbers(); //Toast.makeText(getApplicationContext(),"NUMBER INTERACTION IS" + whatsup, Toast.LENGTH_LONG).show(); Log.d(TAG, "ELEMENTS from service are:" + whatsup); //Toast.makeText(getApplicationContext(),"NUMBER OF ENTRIES IS" + whatsup.size(), Toast.LENGTH_LONG).show(); //convert SET BACK TO HASHMAP for (Entry&lt;String,Integer&gt; entry : whatsup) { String name = null; String[] projection = new String[] { ContactsContract.PhoneLookup.DISPLAY_NAME}; Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(entry.getKey())); Cursor cursor = getContentResolver().query(uri, projection, null, null, null); if (cursor.moveToFirst()) { name = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME)); } //Toast.makeText(getApplicationContext(),"RESOLVED NAME IS " + name, Toast.LENGTH_LONG).show(); projection = null; map.put(name,entry.getValue()); } //NEW CODE MyCustomAdapter custom = (new MyCustomAdapter(DynamicLists.this, R.layout.row, map)); setListAdapter(custom); custom.notifyDataSetChanged(); //END NEW CODE } //end CONVERT SET BACK TO HASHMAP @Override public void onServiceDisconnected(ComponentName arg0) { mBound = false; } }; //END INTERACTION WITH SERVICE } //end of class 1 </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload