Android 如何通过具有不同参数的两个不同类访问一个类?
我想知道我怎样才能做到这一点 在main活动中,我想调用MyCustomBaseAdapter,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
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