【问题标题】:Getting error in android app - The constructor ArrayAdapter<String>(Organization.YourDownload, int, int, ArrayList<String>) is undefined在 android 应用程序中出现错误 - 构造函数 ArrayAdapter<String>(Organization.YourDownload, int, int, ArrayList<String>) 未定义
【发布时间】:2012-08-06 20:12:45
【问题描述】:

在列表视图中显示组织列表。使用异步任务通过 url iam 获取列表视图中的组织名称。单击任何组织名称时,每个组织的详细信息都会显示在新活动中。
但是我收到此错误构造函数 ArrayAdapter(Organization.YourDownload, int, int, ArrayList) 未定义 .提前致谢

public class Organization extends ListActivity {

    XMLGettersSetters data;
    private static final int ACTIVITY_CREATE=0;
    private static final int ACTIVITY_EDIT=1;
    private Context mActivityAContext;
    private static Organization _appCtrl;



    // private static final int INSERT_ID = Menu.FIRST;
    // private static final int DELETE_ID = Menu.FIRST + 1;
    private final int MENU_ORG = Menu.FIRST;
       @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);

           Organization._appCtrl = this;




         // this.setTitle(R.drawable.add_org);
           getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.drawable.add_org);
          // setTitle(R.drawable.add_org);

          new YourDownload().execute();


       }

       class YourDownload extends AsyncTask<Void, Void, Void> {

           protected Void doInBackground(Void... params) {
           try{
                  SAXParserFactory saxPF= SAXParserFactory.newInstance();
                       SAXParser saxP = saxPF.newSAXParser();
                       XMLReader xmlR = saxP.getXMLReader();

                       URL url = new URL("http://xyz/get_organization_details");

                       XMLHandler myXMLHandler = new XMLHandler();
                       xmlR.setContentHandler(myXMLHandler);
                       xmlR.parse(new InputSource(url.openStream()));

                  }catch(Exception e){
                  e.printStackTrace();
                  }

               return null;

           }

           @Override
           protected void onPostExecute(Void result) {

               super.onPostExecute(result);
               data= XMLHandler.data;

               ListView lv = getListView();
               lv.setBackgroundResource(R.drawable.background);

               LayoutInflater inflater = getLayoutInflater();
               ViewGroup header = (ViewGroup)inflater.inflate(R.layout.header_addorg, lv, false);
               lv.addHeaderView(header, null, false);

            //Organization.getAppCtrl();

               this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label,data.getName()));

               lv.setOnItemClickListener(new OnItemClickListener() {
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


                 // selected item 
                 String name = ((TextView)view).getText().toString();

                for(int i=0;i<data.getId().size();i++){

                if(name.equalsIgnoreCase(data.getName().get(i).toString()))
            {


                 String email = data.getEmail().get(i).toString();
                 String address=data.getAddress().get(i).toString();
                 String url=data.getUrl().get(i).toString();
                 String postcode = data.getPostcode().get(i).toString();
                 String id_org = data.getId().get(i).toString();
                 Log.v("ID",id_org.toString());
               //  Log.v("postcode",postcode.toString());


                 // Launching new Activity on selecting single List Item
                 Intent intent = new Intent(getApplicationContext(),SingleListItem.class);
                 // sending data to new activity
                intent.putExtra("name", name);
                intent.putExtra("email", email);
                intent.putExtra("address", address);
                intent.putExtra("url", url);
                intent.putExtra("postcode", postcode);
                intent.putExtra("id_org", id_org);

                 startActivity(intent);
            }
                }


                 }

               });


           }

           @Override
           protected void onPreExecute() {
               // pre execute logic
               super.onPreExecute();
           }

       }




       public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 11, 0, "Add Organization");
    return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == 11) {
    //setCategoryReportValues();
    addorgm();
    }
    return super.onOptionsItemSelected(item);
    }

    public static Organization getAppCtrl()
    {
        return _appCtrl;
    }
    public void setContextForActivityA(Context context) 
    {
        mActivityAContext = context;
    }
    public Context getContextForActivityA()
    {
        return mActivityAContext;
    }
    private void addorgm() {
    Intent i = new Intent(Organization.this,AddOrg.class);
    startActivity(i);
    }
       }

【问题讨论】:

    标签: android android-context


    【解决方案1】:

    this 指向您的 YourDownload 实例,而不是组织。

    当你在内部类中使用 this 时,当你想使用 Main 类或说超类时,它会考虑这个内部类的实例而不是超类。

    您可以通过在您的案例中给出 Parent 类的类名来使用它

    Organization.this.setListAdapter(new ArrayAdapter<String>(Organization.this, R.layout.list_item, R.id.label,data.getName()));
    

    【讨论】:

      【解决方案2】:

      这里的问题是ArrayAdapter 期望View 的实例作为第一个参数。您正在嵌套子类YourDownload 中对其进行初始化。试试这个:

      Organization.this.setListAdapter(new ArrayAdapter<String>(Organization.this, R.layout.list_item, R.id.label,data.getName()));
      

      【讨论】:

      • 也尝试过这样做。但仍然出现相同的错误 - 方法 setListAdapter(ArrayAdapter) 未定义类型 Organization.YourDownload
      • 修复第一个“this”以指向组织(响应已编辑)
      • 感谢您的回复..它正在运行。但是每当组织活动开始时,黑屏会显示几秒钟,然后显示列表视图
      • 如果这对您有所帮助,您应该接受答案并为您的新问题创建一个新问题(因为它是一个不同的主题)。在该问题中,包括您可以使用调试器收集到的任何相关日志和信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多