使用自定义列表进行抽屉布局时出错

时间:2015-10-26 06:28:44

标签: java android android-layout android-activity

我在自定义列表中创建左抽屉时收到错误。 inflater siliderAdapter.javapublic class Food extends ActionBarActivity { ImageView licon; ImageView menu_btn; Intent i; Intent intent; ListView lv; String[] foodIcon; String[] FoodText; String [] food_id; ProgressDialog pDialog; String[] userdata; public HashMap<String, String> catagories = new HashMap<String, String>(); ArrayList<NavDrawerItem> mNavItems = new ArrayList<NavDrawerItem>(); String[] menu; DrawerLayout dLayout; ListView dList; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_food); licon=(ImageView)findViewById(R.id.l_icon); menu_btn=(ImageView)findViewById(R.id.menu_btn); /*menu = new String[]{"Home","Android","Windows","Linux","Raspberry Pi","WordPress","Videos","Contact Us"}; dLayout = (DrawerLayout) findViewById(R.id.drawer_layout); dList = (ListView) findViewById(R.id.left_drawer); adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,menu); dList.setAdapter(adapter); // dList.setSelector(android.R.color.holo_blue_dark); */ String[]data={"History","Food","Location","Faranchise","Terms & Conditions","Log Out"}; int[]icons={R.drawable.history,R.drawable.food,R.drawable.location,R.drawable.franchise,R.drawable.t_c,R.drawable.logout}; //menu = new siliderAdapter(data,icons); dLayout = (DrawerLayout) findViewById(R.id.drawer_layout); dList = (ListView) findViewById(R.id.navlist); dList.setAdapter(new siliderAdapter(this,data,icons)); dList.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG).show(); /*dLayout.closeDrawers(); Bundle args = new Bundle(); args.putString("Menu", menu[position]); Fragment detail = new DetailFragment(); detail.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, detail).commit();*/ } }); i=new Intent(this,Location.class); intent=new Intent(this,SilideMenu.class); if(this.getIntent().getExtras()!=null) { Bundle b=this.getIntent().getExtras(); String msg=b.getString("msg"); Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); userdata=b.getStringArray("user_data"); // if(userdata!=null){ // user_data_bean ob = new user_data_bean(); // // // ob.set_User_id(userdata[0]); // ob.set_user_name(userdata[1]); // ob.set_email_id(userdata[2]); // ob.set_phone_number(userdata[3]); // ob.set_address(userdata[4]); // ob.set_status(userdata[5]); // ob.set_message(userdata[5]); // } } new getFoodCategory().execute(); lv=(ListView) findViewById(R.id.food_list); menu_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //startActivity(intent); drawer(); } }); licon.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub startActivity(i); } }); }// end of onCreate method public void drawer(){ String[]data={"History","Food","Location","Faranchise","Terms & Conditions","Log Out"}; int[]icons={R.drawable.history,R.drawable.food,R.drawable.location,R.drawable.franchise,R.drawable.t_c,R.drawable.logout}; //menu = new siliderAdapter(data,icons); dLayout = (DrawerLayout) findViewById(R.id.drawer_layout); dList = (ListView) findViewById(R.id.left_drawer); dList.setAdapter(new siliderAdapter(Food.this,data,icons)); // adapter.setAdapter(new siliderAdapter(Food.this,data,icons)); // adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,(new siliderAdapter(data,icons))); // dList.setAdapter(adapter); // dList.setSelector(android.R.color.holo_blue_dark); dList.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG).show(); /*dLayout.closeDrawers(); Bundle args = new Bundle(); args.putString("Menu", menu[position]); Fragment detail = new DetailFragment(); detail.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, detail).commit();*/ } }); } class getFoodCategory extends AsyncTask<String, String, String[]> { @Override protected void onPreExecute() { super.onPreExecute(); // Showing progress dialog pDialog = new ProgressDialog(Food.this); pDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); pDialog.setMessage("Please wait..."); pDialog.setCancelable(false); pDialog.show(); } protected void onPostExecute(String []result) { super.onPostExecute(result); lv.setAdapter(new CustomAdapter(Food.this,FoodText,foodIcon,food_id,userdata)); pDialog.dismiss(); } @Override protected String [] doInBackground(String... params) { // TODO Auto-generated method stub JSONArray Food_Text = null; ArrayList<HashMap<String, String>> jCatagory = new ArrayList<HashMap<String, String>>(); getFoods cat=new getFoods(); String url="http://"; String jsonStr = cat.viewRecords(url, getFoods.GET, null); //Log.d("Records", jsonStr); String FoodPath = null; if (jsonStr!= null) { try { JSONObject jsonObj = new JSONObject(jsonStr); Food_Text = jsonObj.getJSONArray("products"); for(int i=0; i<Food_Text.length();i++) { JSONObject c = Food_Text.getJSONObject(i); String foodId = c.getString("food_id"); // Log.d("Cat Id", catId); String food_name = c.getString("name"); JSONArray files = c.getJSONArray("files"); for(int k = 0; k<files.length();k++){ JSONObject filesPart = files.getJSONObject(k); FoodPath = filesPart.getString("path"); } catagories.put("path"+i,FoodPath); catagories.put("cat_name"+i, food_name); catagories.put("foodId"+i, foodId); } //System.out.println("catagories Size="+catagories.size()); FoodText = new String [catagories.size()/3]; foodIcon = new String [catagories.size()/3]; food_id = new String[catagories.size()/3]; } catch (JSONException e) { Log.d("catch", "in the catch"); e.printStackTrace(); } } else { Log.e("JSON Data", "Didn't receive any data from server!"); } for(int k=0; k<catagories.size();k++){ if(catagories.get("cat_name"+k)==null){ //continue; }else{ FoodText[k]=catagories.get("cat_name"+k); foodIcon[k]=catagories.get("path"+k); food_id[k]=catagories.get("foodId"+k); // jokesCates[k]=catagories.get("cat_name"+k); //System.out.print("cat_name"+catagories.get("cat_name"+k)+"\n"); //System.out.print("Path"+catagories.get("path"+k)+"\n"); } } return null; // TODO Auto-generated method stubs } } }//end of class 膨胀,我收到错误。

食物活动类

import student.briyani.CustomAdapter.holder;

import com.squareup.picasso.Picasso;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class siliderAdapter extends BaseAdapter {

    String [] text;
    int[] imgIcon;
    Context context;
    private static LayoutInflater inflater=null;
    /*public siliderAdapter(Food food, String [] data, int [] icon){
        text=data;
        imgIcon=icon;
        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }*/
    public siliderAdapter(Food cat, String[] data, int[] icons) {
        // TODO Auto-generated constructor stub
        text=data;
        imgIcon=icons;
         context=cat;
        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return text.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public class holder{
         ImageView img;
         TextView txt;

    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final holder hldr=new holder();
        View rowView = null;
        //Bitmap bitmap = null;
          rowView = inflater.inflate(R.id.navlist, null);
          hldr.txt=(TextView) rowView.findViewById(R.id.siliderText);
          hldr.img=(ImageView) rowView.findViewById(R.id.icon);       
          hldr.txt.setText(text[position]);
          hldr.img.setImageResource(imgIcon[position]);
           rowView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
        /*      String food_id=hldr.foodId.getText().toString();
                //Toast.makeText(context, "food_id="+food_id, Toast.LENGTH_LONG).show();
                Bundle b=new Bundle();
                b.putString("food_id", food_id);
                b.putStringArray("images", imgs);
                b.putStringArray("userData", userData);

                Intent Intent=new Intent(context, Menu.class);
                Intent.putExtras(b);
                context.startActivity(Intent);
        */  
    Toast.makeText(context, "Hello",Toast.LENGTH_LONG).show();
    }
        });
         return rowView;
    }

}

Silider适配器代码在这里

> 10-26 11:40:07.633: E/AndroidRuntime(1427): FATAL EXCEPTION: main
> 10-26 11:40:07.633: E/AndroidRuntime(1427):
> android.content.res.Resources$NotFoundException: Resource ID
> #0x7f090050 type #0x12 is not valid 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.content.res.Resources.loadXmlResourceParser(Resources.java:2115)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.content.res.Resources.getLayout(Resources.java:857) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.LayoutInflater.inflate(LayoutInflater.java:394) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.LayoutInflater.inflate(LayoutInflater.java:352) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> student.briyani.siliderAdapter.getView(siliderAdapter.java:68) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.widget.AbsListView.obtainView(AbsListView.java:2033) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.widget.ListView.makeAndAddView(ListView.java:1772) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.widget.ListView.fillDown(ListView.java:672) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.widget.ListView.fillFromTop(ListView.java:732) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.widget.ListView.layoutChildren(ListView.java:1625) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.widget.AbsListView.onLayout(AbsListView.java:1863) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1617)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.onLayout(LinearLayout.java:1401) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:907)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.widget.FrameLayout.onLayout(FrameLayout.java:431) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.widget.FrameLayout.onLayout(FrameLayout.java:431) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.widget.FrameLayout.onLayout(FrameLayout.java:431) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.view.View.layout(View.java:11278) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewGroup.layout(ViewGroup.java:4224) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.os.Handler.dispatchMessage(Handler.java:99) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> android.os.Looper.loop(Looper.java:137) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> android.app.ActivityThread.main(ActivityThread.java:4424) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> java.lang.reflect.Method.invokeNative(Native Method) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> java.lang.reflect.Method.invoke(Method.java:511) 10-26 11:40:07.633:
> E/AndroidRuntime(1427):   at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
> 10-26 11:40:07.633: E/AndroidRuntime(1427):   at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 10-26
> 11:40:07.633: E/AndroidRuntime(1427):     at
> dalvik.system.NativeStart.main(Native Method)

Eror讯息

public class MyPublicClass {
   public void method1(Data1 x) {
       ....call private method
   }

   public void method2(Data2 x) {
       ....call private method
   }

   private void methodX(String, int, int, double, String)
       ...do the work
   }
}

1 个答案:

答案 0 :(得分:0)

public siliderAdapter(Food cat, String[] data, int[] icons) {

    text = data;
    imgIcon = icons;
    context = cat;
    inflater = (LayoutInflater)context.
            getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

这一行

context = cat;

您将食物变量(cat)分配给上下文(上下文)类型的变量,这是一个错误。

修改构造函数并将Context作为参数传递。

public siliderAdapter(Context ctx, Food cat, String[] data, int[] icons) {

    text = data;
    imgIcon = icons;
    context = ctx;
    inflater = (LayoutInflater)context.
            getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}