2017-07-02 27 views
2

我想在每一行都有變化,每第二例如的listItem 1具有2繪項目之間的變化和的listItem 2有2間變化的一個ImageView的一個ImageView的一個ImageView的清單與listItem1不同的drawable。我的代碼將所有listItems imageViews更改爲相同的drawables。我怎樣才能實現即時通訊嘗試?如何使一個ListView不斷變化的圖像

public class GymWorkoutList extends AppCompatActivity { 

String[] name = {"Push up", "Side Plank"}; 
String[] sets = {"5", "4"}; 
String[] reps = {"12", "10"}; 
int[] img = {}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gym_workout_list); 

    final ListAdapter gymExerListAdapter = new GymWorkoutListAdapter(this, name, reps, sets, img); 
    ListView gymList2 = (ListView)findViewById(R.id.ListaExerciciosGym2); 
    gymList2.setAdapter(gymExerListAdapter); 

}} 

適配器

public class GymWorkoutListAdapter extends ArrayAdapter<String> { 

public static int[] imgArray = {R.drawable.pushup1,R.drawable.pushup2}; 
public static int[] imgArray2 = {R.drawable.sideplank1,R.drawable.sideplank2}; 
int[] img={}; 
String[] sets={}; 
String[] reps={}; 
String[] name={}; 
Context c; 
LayoutInflater inflater; 


public GymWorkoutListAdapter(@NonNull Context context, String[] name, String[] sets, String[] reps, int[] img) { 
    super(context, R.layout.activity_gym_workout_list_adapter,name); 

    this.name=name; 
    this.c=context; 
    this.sets=sets; 
    this.reps=reps; 
    this.img=img; 
} 

public class views 
{ 
    TextView nameText; 
    TextView setsText; 
    TextView repsText; 
    ImageView imgView; 
} 

@NonNull 
@Override 
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 


    View customView = convertView; 
    if(customView == null){ 
     inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     customView = inflater.inflate(R.layout.activity_gym_workout_list_adapter, parent, false); 
     customView.setMinimumHeight(parent.getHeight()/getCount());} 

    final views holder = new views(); 
    holder.nameText = (TextView) customView.findViewById(R.id.exerText); 
    holder.setsText = (TextView) customView.findViewById(R.id.numSets); 
    holder.repsText = (TextView) customView.findViewById(R.id.numReps); 
    holder.imgView = (ImageView) customView.findViewById(imageView); 


    holder.nameText.setText(name[position]); 
    holder.setsText.setText(sets[position]); 
    holder.repsText.setText(reps[position]); 

    final Handler handler = new Handler(); 
    Runnable runnable = new Runnable() { 
     int i=0; 
     public void run() { 
      holder.imgView.setImageResource(imgArray[i]); 
      i++; 
      if(i>imgArray.length-1) 
      { 
       i=0; 
      } 
      handler.postDelayed(this, 650); 
     } 

    }; 
    handler.postDelayed(runnable, 1000); 

    Runnable runnable2 = new Runnable() { 
     int i = 0; 

     public void run() { 
      holder.imgView.setImageResource(imgArray2[i]); 
      i++; 
      if (i > imgArray2.length - 1) { 
       i = 0; 
      } 
      handler.postDelayed(this, 650); 
     } 
    }; 
    handler.postDelayed(runnable2, 1000); 

    return customView; 
}} 

定製行XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.andre.fitness.Workouts.GymWorkoutListAdapter"> 

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="195dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginTop="10dp" 
    android:layout_height="97dp" 
    app:srcCompat="@drawable/pushup1" 
    tools:layout_editor_absoluteX="1dp" 
    tools:layout_editor_absoluteY="-2dp" /> 

<TextView 
    android:id="@+id/sets" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Sets:" 
    android:textColor="#000000" 
    android:layout_marginTop="21dp" 
    android:layout_below="@+id/exerText" 
    android:layout_alignLeft="@+id/exerText" 
    android:layout_alignStart="@+id/exerText" /> 

<TextView 
    android:id="@+id/reps" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Reps:" 
    android:textColor="#000000" 
    android:layout_below="@+id/sets" 
    android:layout_alignLeft="@+id/sets" 
    android:layout_alignStart="@+id/sets" 
    android:layout_marginTop="16dp" /> 

<TextView 
    android:id="@+id/numSets" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" 
    android:layout_alignBaseline="@+id/reps" 
    android:layout_alignBottom="@+id/reps" 
    android:layout_alignLeft="@+id/numReps" 
    android:layout_alignStart="@+id/numReps" /> 

<TextView 
    android:id="@+id/numReps" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" 
    android:layout_alignBaseline="@+id/sets" 
    android:layout_alignBottom="@+id/sets" 
    android:layout_toRightOf="@+id/exerText" 
    android:layout_toEndOf="@+id/exerText" /> 

<TextView 
    android:id="@+id/exerText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:text="TextView" 
    android:layout_marginLeft="22dp" 
    android:layout_marginStart="22dp" 
    android:layout_alignTop="@+id/imageView" 
    android:layout_toRightOf="@+id/imageView" 
    android:layout_toEndOf="@+id/imageView" /> 

</RelativeLayout> 

回答

0

定義的視圖,適配器構造

... 
imgView = new ImageView[adapter.size()]; 

陣列和我建議用不同的排序圖像的復位適配器。 也創建自定義視圖並處理改變customView類中的背景。 如果你想要2組視圖,那麼創建2個customView擴展ImageView。 看看這個教程創建自定義視圖 http://www.vogella.com/tutorials/AndroidCustomViews/article.html

0

提示

在您的列表項的佈局自定義列表視圖(行的佈局),你可以把兩者的圖像,能見度一個爲VISIBLE,另一個爲GONE。現在,當您想要更改圖像時,可以通過編程方式更改視圖的可見性。

這就是我在說的。

你的自定義行佈局可以看起來像:

<RelativeLayout> 
     <ImageView 
     android:visibility="gone" 
     android:id="@+id/img1" 
     android:layout_alignParentLeft="true" /> 

     <ImageView 
      android:id="@+id/img2" 
      android:layout_alignParentRight="true"/> 

</RelativeLayout> 

以及改變的可視性:

public View getView(int position, View convertView, ViewGroup parent) { 
    img2.setVisibility(VIEW.GONE); 
    img1.setVisibility(VIEW.VISABLE); 
} 
相關問題