Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何通过具有不同参数的两个不同类访问一个类?_Android_Listview_Android Listview_Parameters - Fatal编程技术网

Android 如何通过具有不同参数的两个不同类访问一个类?

Android 如何通过具有不同参数的两个不同类访问一个类?,android,listview,android-listview,parameters,Android,Listview,Android Listview,Parameters,我想知道我怎样才能做到这一点 在main活动中,我想调用MyCustomBaseAdapter,getCount函数 main活动 public class MainActivity extends AppCompatActivity { InfoAPI sqlcon; private SimpleCursorAdapter dataAdapter; private SQLiteDatabase database; private MyDatabaseHelpe

我想知道我怎样才能做到这一点

在main活动中,我想调用MyCustomBaseAdapter
getCount
函数

main活动

public class MainActivity extends AppCompatActivity {

    InfoAPI sqlcon;
    private SimpleCursorAdapter dataAdapter;
    private SQLiteDatabase database;
    private MyDatabaseHelper dbHelper;
    private ListView listView;
    TextView txtNoResult;
    MyCustomBaseAdapter obj;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=(ListView)findViewById(R.id.listView2);
        txtNoResult=(TextView)findViewById(R.id.textView);
        dbHelper = new MyDatabaseHelper(this);
        sqlcon = new InfoAPI(this);
       obj=new MyCustomBaseAdapter(this);  // here the error
        listView.setAdapter(obj);
        int totalItem=obj.getCount(); // call getCount in MyCustomBaseAdapter
        {
            if (totalItem== 0) {
                txtNoResult.setVisibility(View.GONE);
                BuildList();
            } else {
                txtNoResult.setVisibility(View.VISIBLE);
                listView.setVisibility(View.GONE);

            }

        }
在活动B中,我还需要访问MyCustomBaseAdapter。如您所见,我在活动B中添加了页脚页脚布局

活动B

 FrameLayout footerLayout;
 AbsoluteLayout footer;

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 listview = (ListView) findViewById(R.id.listView);

 footer = (AbsoluteLayout) getLayoutInflater().inflate(R.layout.total_hours, null);
        totalHours = (TextView) footer.findViewById(R.id.textView10);
        footerLayout = (FrameLayout) getLayoutInflater().inflate(R.layout.under_list_view_button, null);
        btnSubmit = (Button) footerLayout.findViewById(R.id.btnSave);
        btnAddClaims = (Button) footerLayout.findViewById(R.id.addClaims);
        objMyCustomBaseAdapter = new MyCustomBaseAdapter(getApplicationContext(), results, listview, footerLayout, footer);
        listview.setAdapter(objMyCustomBaseAdapter);

   btnSubmit.setOnClickListener(new View.OnClickListener() { // sumbit button is clicked
            public void onClick(View arg0) {
                Toast.makeText(getApplicationContext(), "Click", Toast.LENGTH_LONG).show();
                first=objMyCustomBaseAdapter.getFistTime();
                String[] first1 = first.split(":", 2);
                last=objMyCustomBaseAdapter.getLastTime();
                String[] last1=last.split(":",2);;
               long a=ts.insertTimeSheet(name, weather, date, status,first1[1] , last1[1]);
                WD.insertWorkDetails(results,a);
                Intent intent=new Intent(getApplicationContext(),MainActivity.class);
                startActivity(intent);


            }
        });
    }
最后这是MyCustomBaseAdapter类

public class MyCustomBaseAdapter extends BaseAdapter{   // for ListView


        private static ArrayList<SearchResults> searchArrayList;

        FrameLayout footerLayout;
        private LayoutInflater mInflater;
        ListView listview;
       AbsoluteLayout footer;

        public MyCustomBaseAdapter(Context context, ArrayList<SearchResults> results,ListView listview,FrameLayout footerLayout,AbsoluteLayout footer) {
            searchArrayList = results;
            this.listview=listview;
            this.footerLayout=footerLayout;
            mInflater = LayoutInflater.from(context);
             this.footer=footer;
            addOrRemoveFooter();
        }

    public void addOrRemoveFooter(){
        if(searchArrayList.size() == 0 && listview.getFooterViewsCount() > 0){
           listview.removeFooterView(footer);
            listview.removeFooterView(footerLayout);
        }else if(listview.getFooterViewsCount() == 0 && searchArrayList.size()>0){
            listview.addFooterView(footer);
            listview.addFooterView(footerLayout);
        }
    }

    public int getCount() {
        return searchArrayList.size();
    }

       public String getFistTime() {
        SearchResults firstTime = this.searchArrayList.get(0);
        return firstTime.getTimeIn();
       }

    public String getLastTime() {
        SearchResults lastTime = this.searchArrayList.get(searchArrayList.size() - 1);
        return lastTime.getTimeOut();
    }
公共类MyCustomBaseAdapter扩展了ListView的BaseAdapter{// 私有静态ArrayList searchArrayList; 框架布局; 私人停车场; 列表视图列表视图; 绝对版面页脚; 公共MyCustomBaseAdapter(上下文上下文、ArrayList结果、ListView ListView、FrameLayout footerLayout、AbsoluteLayout footer){ searchArrayList=结果; this.listview=listview; this.footerLayout=footerLayout; mInflater=LayoutInflater.from(上下文); this.footer=页脚; addOrRemoveFooter(); } public void addor removeFooter(){ if(searchArrayList.size()==0&&listview.GetFooterViewScont()>0){ 移除页脚视图(页脚); 移除页脚视图(页脚布局); }else if(listview.getFooterViewScont()==0&&searchArrayList.size()>0){ 添加页脚视图(页脚); 添加页脚视图(页脚布局); } } public int getCount(){ 返回searchArrayList.size(); } 公共字符串getFistTime(){ SearchResults firstTime=this.searchArrayList.get(0); return firstTime.getTimeIn(); } 公共字符串getLastTime(){ SearchResults lastTime=this.searchArrayList.get(searchArrayList.size()-1); 返回lastTime.getTimeOut(); }
由于参数不同,我如何允许两个activities accessMyCustomBaseAdapter呢?请给我一些提示。谢谢。我建议您将数组的大小保存在数据库中,并在每次从列表中添加或删除项时更新。这样,您就可以在ur activities

您可以使用两个构造函数,一个用于通过活动A访问,另一个用于活动B。为什么要将listview和页脚引用传递给适配器..您可以在同一活动中仅将其设置为na..通过检查arrayList的大小。我希望页脚添加dynamicallyYah…您可以在活动类中仅将其设置为na