在Android中单击按钮时如何更改ListView的按钮背景颜色

笑容

在我的应用程序中,我在列表视图中保留“是”和“否”按钮作为一项。setOnClickListenerAdapter类中定义我对此有疑问。滚动列表视图后,在另一行中看到更改的按钮。我该如何解决我的问题?

public class QuizAdapter extends BaseAdapter {

    private static final String FONTH_PATH_1 = "fonts/Brandon_reg.otf";
    private static final String FONTH_PATH_2 = "fonts/Brandon_bld.otf";

    private ArrayList<Question> questionList = new ArrayList<Question>();
    private LayoutInflater inflater;

    private Context context;

    public QuizAdapter(Context context) {
        super();
        this.inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.context = context;
    }

    public void addListItem(final Question item) {
        questionList.add(item);
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return questionList.size();
    }

    @Override
    public Question getItem(int position) {
        // TODO Auto-generated method stub
        return questionList.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

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

        final ViewHolder holder;


        Question currentQuestion = getItem(position);

        Typeface font1 = Typeface.createFromAsset(context.getAssets(),
                FONTH_PATH_1);
        Typeface font2 = Typeface.createFromAsset(context.getAssets(),
                FONTH_PATH_2);

        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.quiz_list, null);

            holder.questionCounterTextView = (TextView) convertView
                    .findViewById(R.id.questionCounterTextView);
            holder.questionCounterTextView.setTypeface(font2);

            holder.questionTextView = (TextView) convertView
                    .findViewById(R.id.questionTextView);
            holder.questionTextView.setTypeface(font1);

            holder.yesButton = (Button) convertView
                    .findViewById(R.id.yesButton);
            holder.yesButton.setTypeface(font2);

            holder.noButton = (Button) convertView.findViewById(R.id.noButton);
            holder.noButton.setTypeface(font2);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();


        }

        holder.yesButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                holder.yesButton.setBackgroundColor(R.color.Gray);
            }
        });

        holder.questionCounterTextView.setText(Integer.toString(position + 1));

        holder.questionTextView.setText(currentQuestion.getQuestionMessage());

        return convertView;
    }

    public static class ViewHolder {
        public TextView questionCounterTextView, questionTextView;
        public Button yesButton, noButton;
    }

}

xml文件

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:background="@color/White"
    android:orientation="vertical"
    tools:context="...." >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp" >

        <ImageView
            android:id="@+id/flagImageView"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_alignParentLeft="true"
            android:src="@drawable/flag" />

        <TextView
            android:id="@+id/questionCounterTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/flagImageView"
            android:layout_alignLeft="@+id/flagImageView"
            android:layout_alignRight="@+id/flagImageView"
            android:layout_alignTop="@+id/flagImageView"
            android:layout_marginLeft="10dp"
            android:text="1"
            android:gravity="center|left"
            android:textColor="@color/White" 
            android:textSize="@dimen/question_counter_text_size"/>

        <TextView
            android:id="@+id/questionTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_toRightOf="@+id/flagImageView"
            android:text="@string/loremIpsum2"
            android:textColor="@color/Blue"
            android:textSize="@dimen/text_size" />
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/quizLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="30dp"
        android:orientation="horizontal"
        android:weightSum="640" >

        <Space
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="30" />

        <Button
            android:id="@+id/yesButton"
            style="@style/button_type"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="275"
            android:background="@color/QuizGreen"
            android:text="@string/yes"
            android:textColor="@color/White"
            android:textSize="@dimen/question_button_text_size" />

        <Space
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="30" />

        <Button
            android:id="@+id/noButton"
            style="@style/button_type"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="275"
            android:background="@color/QuizOrange"
            android:text="@string/no"
            android:textColor="@color/White"
            android:textSize="@dimen/question_button_text_size" />

        <Space
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="30" />
    </LinearLayout>

</LinearLayout>
笑容

我通过在Question类中定义一个新的String来解决我的问题,该类保留用户答案。控制是或否,而不是更改背景。

        holder.yesButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (currentQuestion.getUserAnswer() == null) {
                questionList.get(position).setUserAnswer("TRUE");
                notifyDataSetChanged();
            } else if (currentQuestion.getUserAnswer().equals("FALSE")) {
                questionList.get(position).setUserAnswer("TRUE");
                notifyDataSetChanged();
            }
        }
    });

    holder.noButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (currentQuestion.getUserAnswer() == null) {
                questionList.get(position).setUserAnswer("FALSE");
                notifyDataSetChanged();
            } else if (currentQuestion.getUserAnswer().equals("TRUE")) {
                questionList.get(position).setUserAnswer("FALSE");
                notifyDataSetChanged();
            }
        }
    });

    if (currentQuestion.getUserAnswer() == null) {
        holder.yesButton.setBackgroundColor(context.getResources()
                .getColor(R.color.QuizGreen));
        holder.noButton.setBackgroundColor(context.getResources().getColor(
                R.color.QuizOrange));
    } else if (currentQuestion.getUserAnswer().equals("TRUE")) {
        holder.yesButton.setBackgroundColor(context.getResources()
                .getColor(R.color.NewsFeedDividerGray));
        holder.noButton.setBackgroundColor(context.getResources().getColor(
                R.color.QuizOrange));
    } else {
        holder.yesButton.setBackgroundColor(context.getResources()
                .getColor(R.color.QuizGreen));
        holder.noButton.setBackgroundColor(context.getResources().getColor(
                R.color.NewsFeedDividerGray));
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按钮-单击更改背景颜色

来自分类Dev

用户单击并释放按钮时如何更改android按钮的颜色

来自分类Dev

JavaScript:单击按钮时无法更改div的背景颜色

来自分类Dev

单击按钮更改布局背景颜色

来自分类Dev

Android:单击时更改按钮颜色

来自分类Dev

如何更改按钮的背景颜色?

来自分类Dev

每次单击按钮时如何更改背景

来自分类Dev

如何通过单击javascript中的按钮来更改背景颜色和文本颜色?

来自分类Dev

在猕猴桃中单击时如何更改按钮颜色

来自分类Dev

使用jQuery单击删除按钮时更改行背景颜色

来自分类Dev

单击HTML / CSS时,单选按钮不会更改背景颜色

来自分类Dev

如何在单击按钮时更改按钮的背景颜色

来自分类Dev

在React Native中单击时如何使每个按钮更改颜色?

来自分类Dev

如何在Android中单击按钮更改笔的颜色

来自分类Dev

如何在Android中更改按钮的文本背景颜色?

来自分类Dev

单击更改背景按钮的颜色

来自分类Dev

单击时更改按钮背景

来自分类Dev

单击时更改按钮颜色

来自分类Dev

如何更改按钮背景的颜色

来自分类Dev

单击按钮时如何更改背景颜色

来自分类Dev

单击android中ListView内的按钮时如何禁用ListView项目中的所有按钮

来自分类Dev

如何更改按钮中的背景颜色大小?

来自分类Dev

单击时更改按钮的背景颜色

来自分类Dev

单击按钮时如何更改按钮颜色

来自分类Dev

单击按钮时如何更改“颜色”名称?

来自分类Dev

单击时如何更改按钮颜色?

来自分类Dev

当列表中的按钮时,单击/按下后如何更改按钮背景颜色?- 颤振

来自分类Dev

单击“颜色”按钮时如何更改矩形的颜色

来自分类Dev

如何在android中单击按钮时更改ImageView?

Related 相关文章

  1. 1

    按钮-单击更改背景颜色

  2. 2

    用户单击并释放按钮时如何更改android按钮的颜色

  3. 3

    JavaScript:单击按钮时无法更改div的背景颜色

  4. 4

    单击按钮更改布局背景颜色

  5. 5

    Android:单击时更改按钮颜色

  6. 6

    如何更改按钮的背景颜色?

  7. 7

    每次单击按钮时如何更改背景

  8. 8

    如何通过单击javascript中的按钮来更改背景颜色和文本颜色?

  9. 9

    在猕猴桃中单击时如何更改按钮颜色

  10. 10

    使用jQuery单击删除按钮时更改行背景颜色

  11. 11

    单击HTML / CSS时,单选按钮不会更改背景颜色

  12. 12

    如何在单击按钮时更改按钮的背景颜色

  13. 13

    在React Native中单击时如何使每个按钮更改颜色?

  14. 14

    如何在Android中单击按钮更改笔的颜色

  15. 15

    如何在Android中更改按钮的文本背景颜色?

  16. 16

    单击更改背景按钮的颜色

  17. 17

    单击时更改按钮背景

  18. 18

    单击时更改按钮颜色

  19. 19

    如何更改按钮背景的颜色

  20. 20

    单击按钮时如何更改背景颜色

  21. 21

    单击android中ListView内的按钮时如何禁用ListView项目中的所有按钮

  22. 22

    如何更改按钮中的背景颜色大小?

  23. 23

    单击时更改按钮的背景颜色

  24. 24

    单击按钮时如何更改按钮颜色

  25. 25

    单击按钮时如何更改“颜色”名称?

  26. 26

    单击时如何更改按钮颜色?

  27. 27

    当列表中的按钮时,单击/按下后如何更改按钮背景颜色?- 颤振

  28. 28

    单击“颜色”按钮时如何更改矩形的颜色

  29. 29

    如何在android中单击按钮时更改ImageView?

热门标签

归档