0

textviewテキストDでアニメーション化する必要があります。しかし、プログラムを実行するとtextview、テキストAtextviewテキストDの両方でアニメーション化されます。textviewwith text Aがリストの最初textviewです。

public class CustomArrayAdapter extends ArrayAdapter<String> {

private Context context;
private int layoutResourceId;
private List<String> data = null;

public CustomArrayAdapter(Context cont, int textViewResourceId,
        List<String> horaNames) {
    super(cont, textViewResourceId, horaNames);

    this.layoutResourceId = textViewResourceId;
    this.context = cont;
    this.data = horaNames;

}

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

    View row = convertView;
    ItemHolder holder = null;
    if (row == null) {
        LayoutInflater inflater = LayoutInflater.from(context);

        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new ItemHolder();
        holder.itemTV = (TextView) row.findViewById(R.id.listItemTV);

        row.setTag(holder);
    } else {
        holder = (ItemHolder) row.getTag();
    }

    // set list view background color
    row.setBackgroundColor(Color.DKGRAY);

    holder.itemTV.setText(data.get(position));

    Animation textAnimation = null;

    if (data.get(position).equals("A")) {
        holder.itemTV.setTextColor(Color.CYAN);
    } else if (data.get(position).equals("B")) {
        holder.itemTV.setTextColor(Color.GREEN);
    } else if (data.get(position).equals("C")) {
        holder.itemTV.setTextColor(Color.MAGENTA);
    } else if (data.get(position).equals("D")) {
        holder.itemTV.setTextColor(Color.RED);
        textAnimation = new AlphaAnimation(0.0f, 1.0f);
        textAnimation.setDuration(800);
        textAnimation.setStartOffset(20);
        textAnimation.setRepeatMode(Animation.REVERSE);
        textAnimation.setRepeatCount(Animation.INFINITE);
        holder.itemTV.startAnimation(textAnimation);
    } else if (data.get(position).equals("E")) {
        holder.itemTV.setTextColor(Color.WHITE);
    } else if (data.get(position).equals("F")) {
        holder.itemTV.setTextColor(Color.YELLOW);
    } else if (data.get(position).equals("G")) {
        holder.itemTV.setTextColor(Color.BLUE);
    }
    textAnimation = null;
    return row;
}

static class ItemHolder {
    TextView itemTV;
}

どうすればこれを解決できますか? textviewテキストDのみでアニメーション化する必要があります。

更新しました

main_list_row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="5dip" >

    <TextView
        android:id="@+id/listItemTV"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:textSize="20sp"
        android:textStyle="bold" />

</RelativeLayout>

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp" />

</RelativeLayout>

プロジェクトのダウンロードを完了します

リンク 2

4

3 に答える 3

1

このように getView() メソッドを変更すると、機能します..

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

    View row = convertView;
    ItemHolder holder = null;
    if (row == null) {
        LayoutInflater inflater = LayoutInflater.from(context);

        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new ItemHolder();
        holder.itemTV = (TextView) row.findViewById(R.id.listItemTV);

        row.setTag(holder);
    } else {
        holder = (ItemHolder) row.getTag();
    }

    // set list view background color
    row.setBackgroundColor(Color.DKGRAY);

    holder.itemTV.setText(data.get(position));

    Animation textAnimation = null;

    if (data.get(position).equals("A")) {
        holder.itemTV.setTextColor(Color.CYAN);
    } else if (data.get(position).equals("B")) {
        holder.itemTV.setTextColor(Color.GREEN);
    } else if (data.get(position).equals("C")) {
        holder.itemTV.setTextColor(Color.MAGENTA);
    } else if (data.get(position).equals("D")) {
        holder.itemTV.setTextColor(Color.RED);
    } else if (data.get(position).equals("E")) {
        holder.itemTV.setTextColor(Color.WHITE);
    } else if (data.get(position).equals("F")) {
        holder.itemTV.setTextColor(Color.YELLOW);
    } else if (data.get(position).equals("G")) {
        holder.itemTV.setTextColor(Color.BLUE);
    }

    if (holder.itemTV.getText().equals("D")) {
        textAnimation = new AlphaAnimation(0.0f, 1.0f);
        textAnimation.setDuration(800);
        textAnimation.setStartOffset(20);
        textAnimation.setRepeatMode(Animation.REVERSE);
        textAnimation.setRepeatCount(Animation.INFINITE);
        holder.itemTV.setAnimation(textAnimation);
    } else if (holder.itemTV.getText().equals("A")) {
        holder.itemTV.setAnimation(null);
    }

    textAnimation = null;
    return row;
}

これも機能します..これの方が良いと思います..

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

    View row = convertView;
    ItemHolder holder = null;
    if (row == null) {
        LayoutInflater inflater = LayoutInflater.from(context);

        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new ItemHolder();
        holder.itemTV = (TextView) row.findViewById(R.id.listItemTV);

        row.setTag(holder);
    } else {
        holder = (ItemHolder) row.getTag();
    }

    // set list view background color
    row.setBackgroundColor(Color.DKGRAY);

    holder.itemTV.setText(data.get(position));

    Animation textAnimation = null;

    if (data.get(position).equals("A")) {
        holder.itemTV.setTextColor(Color.CYAN);
        holder.itemTV.setAnimation(null);
    } else if (data.get(position).equals("B")) {
        holder.itemTV.setTextColor(Color.GREEN);
    } else if (data.get(position).equals("C")) {
        holder.itemTV.setTextColor(Color.MAGENTA);
    } else if (data.get(position).equals("D")) {
        holder.itemTV.setTextColor(Color.RED);
        textAnimation = new AlphaAnimation(0.0f, 1.0f);
        textAnimation.setDuration(800);
        textAnimation.setStartOffset(20);
        textAnimation.setRepeatMode(Animation.REVERSE);
        textAnimation.setRepeatCount(Animation.INFINITE);
        holder.itemTV.setAnimation(textAnimation);
    } else if (data.get(position).equals("E")) {
        holder.itemTV.setTextColor(Color.WHITE);
    } else if (data.get(position).equals("F")) {
        holder.itemTV.setTextColor(Color.YELLOW);
    } else if (data.get(position).equals("G")) {
        holder.itemTV.setTextColor(Color.BLUE);
    }

    textAnimation = null;
    return row;
}
于 2013-11-07T10:29:31.357 に答える