[英]ListView inside of ViewPager
所以我有一個ViewPager內部的ListView。
我在一個布局中有ListView
(add_site.xml)
,在另一個布局(main.xml)
一個EditText
字段,該字段將填充ListView
onClick
我遇到了NPE錯誤,因為我試圖讓ArrayAdapter感到沮喪,這是能夠與ViewPager
中的這兩種布局進行對話的正確方法。
顯然,我的android開發技能不是很好。 我對此很陌生。
因此,任何幫助表示贊賞!
這是我的代碼。
這是PagerAdapter的開始
private class MyPagerAdapter extends PagerAdapter {
final ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager);
public int getCount() {
return 3;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ListView lv = (ListView)findViewById(android.R.id.list);
final ArrayList<String> siteList = new ArrayList<String>();
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(getBaseContext(), R.layout.list_row, siteList);
lv.setAdapter(aa);
int resId = 0;
View view = null;
switch (position) {
case 0:
resId = R.layout.field01;
view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
case 1: //ListView lives in here.
resId = R.layout.add_site;
view = inflater.inflate(resId, null);
Button addSiteButton = (Button)view.findViewById(R.id.addSiteButton);
((ViewPager) collection).addView(view, 0);
addSiteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPager.setCurrentItem(2, true);
}
});
//I originally had the ArrayAdapter code here, but thought it needed to be global so I moved it up.
return view;
case 2:
resId = R.layout.main;
view = inflater.inflate(resId, null);
Button signInButton = (Button)view.findViewById(R.id.sign_in_button);
//This is where the EditText lives
final EditText editText = (EditText)view.findViewById(R.id.textViewId);
((ViewPager) collection).addView(view, 0);
signInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//This is where the button click happens
siteList.add(0, editText.getText().toString());
aa.notifyDataSetChanged();
editText.setText("");
mPager.setCurrentItem(1, true);
}
});
return view;
}
return view;
}
提前致謝!
在我看來,您的NPE的直接原因是此行:
ListView lv = (ListView)findViewById(android.R.id.list);
我猜你打算做些更接近這個的事情:
ListView lv = (ListView) layoutInflater.inflate(R.layout.add_site, null);
我尚不清楚代碼的最終目標,因此我認為我無法在其中提供建議,但是我認為您會發現此示例在將來很有幫助:
等一下 Android UI雜亂無章。 繼續提問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.