如何通过两个不同的类具有不同参数的访问一个班? [英] How to access one class by two different classes with different parameters ?

查看:90
本文介绍了如何通过两个不同的类具有不同参数的访问一个班?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道如何能实现这样的事情。

I wonder how can I achieve something like this.

在我MainActivity,我想打电话给 MyCustomBaseAdapter getCount将功能。

In my MainActivity, I want to call MyCustomBaseAdapter, getCount function.

MainActivity

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添加的页脚页脚布局

In Activity B, I need to access MyCustomBaseAdapter as well. As you can see, I have added footer and footer layout in Activity 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 因为参数是不一样的?有人给我一个暗示吧。谢谢

How can I allow two activities access MyCustomBaseAdapter since the parameter are not the same ? Someone give me a hints please. Thanks

推荐答案

我建议你保存数组的大小在数据库和更新每次项目添加或删除列表。通过这种方式,你可以简单地得到你们的活动从数据库中值

I would suggest saving the size of your array in a database and update everytime items are added or removed from the list. This way, you can simply get the value from the database in your activities

这篇关于如何通过两个不同的类具有不同参数的访问一个班?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆