我对 Android 开发和整体开发还比较陌生。我无法掌握 ViewPager 的语法/过程。
我有几个 ListView,我想将它们实现到 ViewPager 中。我已经加载了兼容包和所有东西。但我还没有看到任何完整的例子来说明如何做到这一点。
我通过看例子学得最好。如果有人可以发布您在其中实现此类操作的任何项目的示例,请告诉我。
问题是当我尝试启动我的 Activity 时,我在这一行得到了一个空指针异常:
listView1.setAdapter(new ArrayAdapter<Object>(this, R.layout.rowlayout, list1));
我怀疑我只是做错了。如果我不使用 ViewPager,我可以获得两个列表来显示它们的内容。所以我知道列表不为空...
编辑:
感谢 VenomM 的回答!这是我最终使用的代码,根据 VenomM 的示例稍作修改。
ViewPagerAdapter:
public class ViewPagerAdapter extends PagerAdapter implements TitleProvider
{
private ListView listView1;
private static String[] titles = new String[]
{
"Page 1",
"Page 2",
"Page 3",
};
private final Context context;
public ViewPagerAdapter( Context context )
{
this.context = context;
}
@Override
public String getTitle( int position )
{
return titles[ position ];
}
@Override
public int getCount()
{
return titles.length;
}
@Override
public Object instantiateItem(View collection, int position) {
LayoutInflater layoutInflater = ((Activity) context).getLayoutInflater();
listView1 = (ListView) layoutInflater.inflate(R.layout.listview1, null);
String[] listData = null;
MyArrayAdapter dataAdapter;
if (position == 0) {
listData = context.getResources().getStringArray(R.array.list1);
dataAdapter = new MyArrayAdapter((Activity) context,
R.layout.rowlayout, listData);
} else if (position == 1) {
listData = context.getResources().getStringArray(R.array.list2);
dataAdapter = new MyArrayAdapter((Activity) context,
R.layout.rowlayout, listData);
} else {
listData = context.getResources().getStringArray(R.array.list3);
dataAdapter = new MyArrayAdapter((Activity) context,
R.layout.rowlayout, listData);
}
listView1.setAdapter(dataAdapter);
listView1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view,
int position, long arg3) {
Toast.makeText(context,
adapter.getAdapter().getItem(position).toString(),
Toast.LENGTH_LONG).show();
}
});
((ViewPager) collection).addView(listView1, 0);
return listView1;
}
@Override
public void destroyItem(View collection, int position, Object view) {
System.out.println("on destroyItem()");
((ViewPager) collection).removeView((ListView) view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
System.out.println("on isViewFromObject()");
return view == ((ListView) object);
}
@Override
public void finishUpdate( View view ) {}
@Override
public void restoreState( Parcelable p, ClassLoader c ) {}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate( View view ) {}
}
数组适配器:
public class MyArrayAdapter extends ArrayAdapter<String>{
private Activity context = null;
private String[] names = null;
private int rowLayoutId;
public MyArrayAdapter(Activity context, int textViewResourceId, String[] names) {
super(context, textViewResourceId, names);
this.context = context;
this.names = names;
this.rowLayoutId =textViewResourceId;
}
// static to save the reference to the outer class and to avoid access to
// any members of the containing class
static class ViewHolder {
protected ImageView imageView;
protected TextView textView;
}
}
最佳答案
我仍然不明白为什么要用对象参数更改 Arrayadapter,如果你想让它保存字符串项。 尝试改变
new ArrayAdapter<Object>(this, R.layout.rowlayout, list1)
到
new ArrayAdapter<String>(this, R.layout.rowlayout, list1)
我使用了自定义 ArrayAdapter,对我来说一切正常。如果您成功了,请告诉我。
关于Android ViewPager 和 ListViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7376613/
范围:我在fragment(ScheduleFragment)中使用ViewPager,它依次显示同一fragment(ScheduleListSubFragment)的5个实例,其中包含各自ListView中的不同数据。我正在使用FragmentPagerAdaper(ScheduleFragmentAdapter)。代码:代码如下:计划fragment:publicclassScheduleFragmentextendsFragment{ScheduleFragmentAdaptermAdapter;ViewPagermPager;PageIndicatormIndicator;T
我离这里很近,我已经尝试了很多东西但无法让它工作。我这里有两个ListView。我想要的是让每个ListView显示其全部内容。我不希望ListView可滚动。我想要包含可滚动ListView的Scrollview。我能得到的最接近的(这是错误的)是每个ListView都是可滚动的。这意味着每个ListView仅显示11/2个单元格。我认为这将是一项非常简单的任务,但Android会发生一些古怪的事情。因此,每个ListView都会显示其全部内容,即使该内容高度超出了屏幕。然后我所要做的就是向下滚动以查看显示其全部内容的第二个ListView。 最佳答案
我在我的应用程序中运行了OrmLite以及数据库助手等等。我查看了OrmLite的示例和一些教程。这是我使用listViews的代码:数据库管理器:publicListgetAllArtists(){Listartists=null;try{artists=getHelper().getArtistDao().queryForAll();}catch(SQLExceptione){e.printStackTrace();}returnartists;}Activity:Listartists=dataBase.getAllArtists();for(Artistartist:artis
我试图让两个并排的ListView在某种程度上像GridView一样。我不使用GridView的原因是因为不支持交错外观。无论如何,到目前为止我有以下代码:编辑:我按照@Sam的建议做了,并使用了以下代码:lv1.setOnTouchListener(newOnTouchListener(){@OverridepublicbooleanonTouch(Viewv,MotionEventevent){if(touchSource==null){touchSource=v;}if(v==touchSource){lv2.dispatchTouchEvent(event);if(event.
关于Android上的某些UI开发,我有一些问题和疑问。首先看这张图:首先在图像A)这是我插入并水平重复的图像,无论屏幕大小如何,都会在屏幕顶部给出锯齿形,在其上方是没有内容和背景颜色的文本字段-但正如我我确信你可以,因为这两种颜色并没有像它应该的那样完美地匹配,即使它们都具有相同的十六进制颜色值(#BF0426)。其次,您还可以在锯齿形图像上看到一些严重的像素化。我该如何解决这2个问题?然后在图像B)这里我有一个简单的listView。我想做的是,首先在两边缩进一点,然后把顶部和底部的角弄圆。所以基本上我希望它看起来像屏幕截图上绘制的蓝色边框。(典型的iOSlistView)。我该怎
我有一个ListView,在每个列表项中我有一些TextView和一个CheckBox。当我检查一个CheckBox并且我的onCheckedChangeListener触发时,一切正常。但是,一旦选中一个复选框,就会选中其他随机复选框。这是一个例子。如果我点击第一个CheckBox:8被检查。15被选中。21被选中。27被选中。33已检查。41已检查。然后,如果我一直向上滚动,直到6点才会检查任何内容。下一个是13点。基本上...发生了什么事? 最佳答案 看来您正在重用在您实现的getView()方法上传递的convertView
我有兴趣创建一个由透明标题和在标题后面滚动的ListView组成的屏幕。我的工作有一个缺陷;FAST滚动条也在标题下方绘制。出于某种原因,fastscrollbar似乎不尊重应用于ListView的scrollbarStyle。您会在下图中注意到普通滚动条工作正常,但powerscroll条位于透明标题后面。不幸的是,我使用的ListView通常会有数百个项目,因此快速滚动条是必需的。有什么方法可以设置未记录的“fastscrollStyle”吗?我愿意接受任何建议!谢谢。这是供引用的布局XML:此问题已在KitKat的ListView中修复,但GridView似乎仍会出现此问题。谷歌
我对Android开发和整体开发还比较陌生。我无法掌握ViewPager的语法/过程。我有几个ListView,我想将它们实现到ViewPager中。我已经加载了兼容包和所有东西。但我还没有看到任何完整的例子来说明如何做到这一点。我通过看例子学得最好。如果有人可以发布您在其中实现此类操作的任何项目的示例,请告诉我。问题是当我尝试启动我的Activity时,我在这一行得到了一个空指针异常:listView1.setAdapter(newArrayAdapter(this,R.layout.rowlayout,list1));我怀疑我只是做错了。如果我不使用ViewPager,我可以获得两
序言我问这个问题是因为即使我已经阅读了大量的ListView资源,我仍然没有“理解”它。背景我有一堆Foo具有与之关联的项目列表(称为Bar),我将它们作为包含Foo的字典从数据访问/业务逻辑层中提取出来及其相关的Bars.我想将网页上的这些项目吐出到ListView中持有Foo.Name在左边,和List在下拉列表的右侧。(下面显示了我美丽的ASCII艺术):ListView------------------------------------------------------------------|NameOfItem|DropDownList(ofList)||------
序言我问这个问题是因为即使我已经阅读了大量的ListView资源,我仍然没有“理解”它。背景我有一堆Foo具有与之关联的项目列表(称为Bar),我将它们作为包含Foo的字典从数据访问/业务逻辑层中提取出来及其相关的Bars.我想将网页上的这些项目吐出到ListView中持有Foo.Name在左边,和List在下拉列表的右侧。(下面显示了我美丽的ASCII艺术):ListView------------------------------------------------------------------|NameOfItem|DropDownList(ofList)||------