我的第一个Android应用程序存在很大问题
目标:
我想在滑动(左/右)时将视图更改为ViewPager元素
问题
我写了一些代码行,但是._不起作用。
我报告我的代码:
MainActivity.java
package com.example.macbookpro.myapplication;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Element element=new Element("nome1","surname1");
Element element1=new Element("nome2","surname2");
ArrayList<Element> elementArrayList=new ArrayList<Element>();
elementArrayList.add(element);
elementArrayList.add(element1);
ViewPager viewPager=(ViewPager) findViewById(R.id.swipeView);
ElementAdapter elementAdapter=new ElementAdapter(elementArrayList,this);
viewPager.setAdapter(elementAdapter);
}
}
ElementAdapter.java
public class ElementAdapter extends PagerAdapter {
private ArrayList<Element> element=new ArrayList<Element>();
private Context ctx;
public ElementAdapter(ArrayList<Element> element, Context ctx) {
this.element = element;
this.ctx = ctx;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View item_view = inflater.inflate(R.layout.element,container,false);
TextView nome = (TextView) item_view.findViewById(R.id.nome);
TextView surname= (TextView) item_view.findViewById(R.id.surname);
nome.setText(element.get(position).getNome());
surname.setText(element.get(position).getSurname());
container.addView(item_view);
return item_view;
}
@Override
public int getCount() {
return this.element.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return false;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
}
Element.java
public class Element {
private String nome;
private String surname;
public Element(String nome, String surname) {
this.nome = nome;
this.surname = surname;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
ActivityMain.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context="com.example.macbookpro.myapplication.MainActivity">
<View
android:id="@+id/centerShim5"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:visibility="invisible" />
<android.support.v4.view.ViewPager
android:id="@+id/swipeView"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_alignBottom="@id/centerShim5"
android:visibility="visible" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/button" />
</RelativeLayout>
Element.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight">
<TextView
android:id="@+id/nome"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="Example application"
android:textSize="20dp"
android:layout_alignLeft="@+id/surname"
android:layout_alignStart="@+id/surname"
android:layout_above="@+id/surname" />
<TextView
android:id="@+id/surname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:text="Description"
android:textSize="12sp"
android:textStyle="normal|bold|italic"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
请帮我。我快疯了
最佳答案
问题出在您的ElementAdapter
类中。
如下更新ElementAdapter
:
public class ElementAdapter extends PagerAdapter {
private ArrayList<Element> element = new ArrayList<Element>();
private Context ctx;
public ElementAdapter(ArrayList<Element> element, Context ctx) {
this.element = element;
this.ctx = ctx;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Use ViewGroup
ViewGroup item_view = (ViewGroup) inflater.inflate(R.layout.element, container ,false);
TextView nome = (TextView) item_view.findViewById(R.id.nome);
TextView surname= (TextView) item_view.findViewById(R.id.surname);
nome.setText(element.get(position).getNome());
surname.setText(element.get(position).getSurname());
container.addView(item_view);
return item_view;
}
@Override
public int getCount() {
return this.element.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object view) {
// Remove specific view
container.removeView((View) view);
}
}
输出:
这是关于
PagerAdapter
的很好的tutorial。希望这将有助于理解PagerAdapter
的基本用法。编码愉快!