2012-05-02 72 views
1

如何从数组中删除任何空值。Android:从数组中删除空值:

public class RecipeMethodActivity extends ListActivity { 

Intent myIntent; 
String value; 
TextView editvalue; 
TextView buttonPressed; 
Intent intent; 
String result = null; 
InputStream is = null; 
StringBuilder sb=null; 
String result2 = null; 



final Recipe[] mRecipesArray = { new Recipe("PortalCake", new String[]{"GlaDOS' wit","Is a lie"}), 
            new Recipe("EarthDestruction", new String[]{"Asteroid", "Kinetic energy"})}; 

public class Recipe{ 
    public String name; 
    public String[] steps; 

    Recipe(String name, String[] steps){ 
     this.name = name; 
     this.steps = steps; 
    } 
} 

public ArrayList<String> FetchRecipesRawArray(Recipe[] recipes){ 
    ArrayList<String> ret = new ArrayList<String>(); 
    for(int i=0;i<recipes.length;i++){ 
     if(!recipes[i].name.equals(value)){ 
      recipes[i].steps = null; 
      Recipe[] tmp = new Recipe[recipes.length - 1]; 
      //int j = 0; 
      //for (int k = 0; k < recipes.length; k++) { 
      // if (j != 1) { 
      //  tmp[j++] = recipes[i]; 
      // } 
      //} 
      recipes = tmp; 
     } else { 
      ret.add(recipes[i].name); 
     } 
    } 
    return ret; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    value = getIntent().getStringExtra("searchValue"); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, FetchRecipesRawArray(mRecipesArray)); 
    setListAdapter(adapter); 

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

    try{ 
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpPost httppost = new HttpPost("http://10.0.2.2/index.php"); 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
        HttpResponse response = httpclient.execute(httppost); 
        HttpEntity entity = response.getEntity(); 
        is = entity.getContent(); 
       }catch(Exception e){ 
        Log.e("log_tag", "Error in http connection"+e.toString()); 
       } 
       //convert response to string 
       try{ 
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
        sb = new StringBuilder(); 
        sb.append(reader.readLine() + "\n"); 
        String line="0"; 
        while ((line = reader.readLine()) != null) { 
         sb.append(line + "\n"); 
        } 
        is.close(); 
        result=sb.toString(); 
        //Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show(); 
       }catch(Exception e){ 
        Log.e("log_tag", "Error converting result "+e.toString()); 
       } 
       //paring data 
       String fd_name; 
       try{ 
        JSONArray jArray = new JSONArray(result); 
        JSONObject json_data=null; 
        for(int i=0;i<jArray.length();i++){ 
         json_data = jArray.getJSONObject(i); 
         fd_name=json_data.getString("recipename"); 
        } 
       }catch(JSONException e1){ 
        Toast.makeText(getBaseContext(), "No Food Found", Toast.LENGTH_LONG).show(); 
       }catch (ParseException e1){ 
        e1.printStackTrace(); 
       } 



} 

protected void onListItemClick(ListView l, View v, int position, long id){ 
    Intent intent = new Intent(this, MethodActivity.class); 
    intent.putExtra(MethodActivity.EXTRA_RECIPEARRAY, mRecipesArray[position].steps); 
    startActivity(intent); 

} 
} 

返回点击它应该带你到匹配配方时列表视图,但如果我要毁灭地球,我得到了门户网站蛋糕食谱的方法。

由于

+1

没有人会猜到你的代码。请提供适当的代码,以便我们提供帮助。 – Nishant

+0

希望有所帮助,如果需要其他代码,请告诉我,我试图让食谱匹配。 –

回答

1

这行代码是一个问题

intent.putExtra(MethodActivity.EXTRA_RECIPEARRAY, mRecipesArray[position].steps); 

代替使用mRecipesArray[position]使用ret.get(position).steps

并声明ArrayList<Recipe> ret = new ArrayList<Recipe>();FetchRecipesRawArray()方法的,以便它可以内部onListItemClick()方法访问。

还修改FetchRecipesRawArray()

else { 
     ret.add(recipes[i]); 
    } 

希望这将帮助您在代码..

+0

我不让我有.steps当改变它,并且我不能改变'ret.add(recipes [i];'因为我的步骤是一个字符串数组而不是纯字符串 –

+0

然后将'ArrayList'改为' ArrayList ret = new ArrayList ();' – Nishant

+0

现在就开始工作:)非常感谢您的帮助。 –