【发布时间】:2017-08-04 13:53:21
【问题描述】:
我的MainActivity 是一个带有两个选项卡的TabbedActivity,每个选项卡由一个单独的Fragment 表示。第二个选项卡应显示ListView。在我的 MainActivity 中,我使用这个 Adapter 来应用我的片段:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super (fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment =null;
switch (position) {
case 0:
fragment = Fragment.instantiate(MainActivity.this, Fragment2.class.getName());
break;
case 1:
fragment = Fragment.instantiate(MainActivity.this, Fragment2.class.getName());
break;
}
return fragment;
}
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Tab1";
case 1:
return "Tab2";
}
return null;
}
}
这是Fragment2 class:
public class Fragment2 extends Fragment {
protected List<Transaction> myTransactions = new ArrayList<Transaction>();
private Context mContext;
DatabaseHelper DBH = new DatabaseHelper(mContext);
String DepositInputValue, DepositInputDate, DepositInputNote;
private static final String ARG_SECTION_NUMBER = "section_number";
public AssetsOverviewList() {
}
public static Fragment2 newInstance(int sectionNumber) {
Fragment2 fragment = new Fragment2();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_2, container, false);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
Cursor res = DBH.getAllData();
if (res.getCount() == 0) {
//do something
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append("Value :" + res.getString(1) + "\n");
buffer.append("Date :" + res.getString(2) + "\n");
buffer.append("Note :" + res.getString(3) + "\n\n");
}
// Show all data
showMessage("Data", buffer.toString());
while (res.moveToNext()) {
DepositInputValue = res.getString(1);
DepositInputDate = res.getString(2);
DepositInputNote = res.getString(3);
}
}
private class LastTransactionsListAdapter extends ArrayAdapter<Transaction> {
public LastTransactionsListAdapter() {
super(MainActivity.this, R.layout.transaction_list_view, myTransactions);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.transaction_list_view, parent, false);
}
Transaction currentTransaction = myTransactions.get(position);
return itemView;
}
}
private void populateListView() {
ArrayAdapter<Transaction> adapter = new LastTransactionsListAdapter();
ListView list = (ListView) list.findViewById(last_transactions_listView);
list.setAdapter(adapter);
}
}
我在LastTransactionsListAdapter 之后的super 处收到错误消息,其中显示“MainActivity 不是封闭类”。它下面的六行告诉我不能应用getLayoutInflater。如果我删除所有与ListView 相关的东西,该应用程序就可以正常工作。我该如何解决?
【问题讨论】:
-
你的代码没有意义。
ArrayAdapter应该描述单行,但您正试图在内部处理整个ListView。ListView它的多行列表,像这样link -
@grabarz121 我会尽快看看
标签: android listview android-fragments