Pregunta

Estoy construyendo una aplicación que tiene una vista de lista que muestra la lista de mis fanáticos favoritos. Mi lista de fanáticos es este! Cuando hago clic en cualquier elemento de esta lista, me muestra un perfil completo del fanático de la preocupación, por ejemplo, este Mi código es ->

public class FavouriteFansActivity extends ListActivity implements OnItemClickListener, OnLongClickListener {
ListView mFavFansListView;
JSONArray jArrayFavFans;//jArrayFavFans that contains jobjects of all fans. each jobj hv data of 1 unique fan!
JSONObject jFavFan_Data;//contain data of an indivisual fan

LazyAdapter adapter;
ArrayList<Object> favFansList;
ArrayList<String> mfavFansImgs;
ItemBean bean;

String favFans;

//String url="http://XXXXX/ManU/";//Live
String url="http://XXXXX/ManU/";//Local

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.on_favourite_fan_list);

    prepareFavFanArrayLits();//method that prepare list of my favorite fans....

    mFavFansListView = (ListView) findViewById(android.R.id.list);
    adapter = new LazyAdapter(this, mfavFansImgs, favFansList);
    mFavFansListView.setAdapter(adapter);

    mFavFansListView.setOnItemClickListener(this);
    mFavFansListView.setOnLongClickListener(this);

    /** I am still not getting that when to call onPause(), onResume(), onRestart()... etc ??? */

}

/* .........onItemClick......... */
       @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
    // TODO Auto-generated method stub
    ItemBean bean = (ItemBean) adapter.getItem(position);

/**from here-> I am going to start one activity that show the complete profile of a 
     * particular Fan... According to the unique id received from clicking on ListItem!    
     */

    Intent in= new Intent(getParent(), FavFanProfile.class);
    TabGroupActivity prnt = (TabGroupActivity) getParent();

    Bundle fBundle= new Bundle();
    fBundle.putString("fanId", bean.getUid());

    in.putExtras(fBundle);
    prnt.startChildActivity("FavFanProfile", in);

}

/* .........onLongClick......... */
@Override
public boolean onLongClick(View v) {
    // TODO Auto-generated method stub
    Toast.makeText(FavouriteFansActivity.this, "To remove...Clk", Toast.LENGTH_SHORT).show();
    return false;
}


/** Method used to prepare the List of Favorite Fans 
 * @author Rupesh */
public void prepareFavFanArrayLits() {
  /* return me array containing data of all favFans */ 

    Boolean mkFavFansList=false;

    SharedPreferences favFansData = getSharedPreferences("jArrayFavFansPref", MODE_WORLD_WRITEABLE);
    favFans=favFansData.getString("favFansData", "");
    Log.i("FavFans_List->", "FavFans_DATA readed from prefs:"+favFans.toString());
    if(!favFans.equals("")){
        try {
            mkFavFansList=true;
            jArrayFavFans=new JSONArray(favFans);
            favFansList = new ArrayList<Object>();
            mfavFansImgs = new ArrayList<String>();
            Log.i("fav_fansONfav", jArrayFavFans.toString());
        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }else {
        Log.i("else_favList_img", "list & image are initialized");
        favFansList = new ArrayList<Object>();
        mfavFansImgs = new ArrayList<String>();
    }

    // ++++++++
    if(mkFavFansList){
        try {
            for (int i = 0; i < jArrayFavFans.length(); i++) {
                // will return the data of each row fetched from JSONArray returned by location1.php
                String data_of_each_user = jArrayFavFans.get(i).toString();

                Log.i("Data Of User at index " + i + " is", data_of_each_user);

                // I put the object at index "i" into JSONObject & retrieve data from name-value pair
                jFavFan_Data = jArrayFavFans.getJSONObject(i);// data of User at index i
                                                    // in array

                AddObjectToList(jFavFan_Data.getString("uniqid").toString(), jFavFan_Data.getString("name"),
                        jFavFan_Data.getString("distance"));

                //Log.i("URL", url+"images/"+jFavFan_Data.get("uniqid").toString()+".png");
                mfavFansImgs.add(url+"images/"+jFavFan_Data.get("uniqid").toString()+".png");
                Log.i("IMG_URL", url+"images/"+jFavFan_Data.get("uniqid").toString()+".png");

                String nm = jFavFan_Data.get("name").toString();
                String uid = jFavFan_Data.get("uniqid").toString();
                String dis = jFavFan_Data.get("distance").toString();

                //System.out.println("Your Name:       " + nm);
                System.out.println("Your Unique Id:  " + uid);
                //System.out.println("Your Distance:   " + dis);
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    } else {
        Log.i("NO_FAVORITE_FANS", "No Favorite Fans are added in favorites List!");
        Toast.makeText(FavouriteFansActivity.this, "No Fans in Favorite List!", Toast.LENGTH_SHORT).show();
    }
        // ++++++++++
}

    //**********************setting vales in bean*************************

public void AddObjectToList(String uid, String title, String desc) {
    bean = new ItemBean();
    bean.setUid(uid);
    bean.setDescription(desc);
    bean.setTitle(title);
    favFansList.add(bean);
}

//***********************************************

 @Override
  protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    Log.i("favFansData_FavoriteFansActivity.java", "hi...on resume"+favFans);
    prepareFavFanArrayLits();

    setContentView(R.layout.on_favourite_fan_list);

    mFavFansListView = (ListView) findViewById(android.R.id.list);
    adapter = new LazyAdapter(this, mfavFansImgs, favFansList);
    mFavFansListView.setAdapter(adapter);// come null pointer exception when no fan data is returned! hendle it...

    mFavFansListView.setOnItemClickListener(this);
    }
}

yo atascado En el punto -> que, ¿Cómo eliminar un elemento (un ventilador) de esta lista (favorita_fans_list) ... ???

Intento hacer algo en OnlongClick Listener, pero no funciona ... ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

¿Fue útil?

Solución

Una forma sería modificar el contenido en el adaptador y luego notificar que ListView ha cambiado.

Otros consejos

Su adaptador posee una lista de matrices para los datos que lo respaldan.

Debe eliminar el objeto de la lista. Luego notifique al adaptador que el conjunto ha cambiado de la siguiente manera.

 favFansList.remove(index);
 adapter.notifyDataSetChanged()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top