2015-12-03 2 views
-1

Интересно, как я могу добиться чего-то подобного.Как получить доступ к одному классу двумя разными классами с разными параметрами?

В моей MainActivity, я хочу позвонить MyCustomBaseAdapter, getCount функция.

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

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 поскольку параметр не то же самое? Кто-то подскажет мне. Спасибо

+0

Вы можете использовать два конструктора для доступа через Activity A, а другой для Activity B. –

+0

Почему вы передаете listview, а ссылки нижнего колонтитула к адаптеру ...? ? Вы можете установить его в той же самой активности только na..by, проверяя размер массиваList. –

+0

Я хочу, чтобы нижний колонтитул динамически добавлялся – Tony

ответ

0

Я бы предложил сохранить размер вашего массива в базе данных и обновлять каждый раз, когда элементы добавляются или удаляются из списка. Таким образом, вы можете просто получить значение из базы данных в своих действиях.

Смежные вопросы