【问题标题】:How to hide an element from CustomAdapter based on what activity you are in?如何根据您所在的活动从 CustomAdapter 隐藏元素?
【发布时间】:2017-07-16 06:19:19
【问题描述】:

我正在尝试制作一款需要你猜数字的游戏。我让用户选择他们想要的数字。

我的自定义适配器最初是为 3 位数构建的,当用户选择 2 位数时,一切正常,但 digit_3 在应用程序运行时始终为 0,我只想隐藏它,我该怎么做?

See screenshot for how it looks like, I want to hide the marked part when user enters the 2 digit activity

这是适配器:

package com.apphorizon.guessthenumber;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.ArrayList;


public class ListAdapter extends ArrayAdapter<List> {

    public ListAdapter(Context context, ArrayList<List> arrayList) {
        super(context, 0, arrayList);
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View listItemView = convertView;
        if (listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_item, parent, false);
        }


        List currentItem = getItem(position);

        TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view);
        num1View.setText(String.valueOf(currentItem.getNum1()));

        TextView num2View = (TextView)listItemView.findViewById(R.id.num_2_view);
        num2View.setText(String.valueOf(currentItem.getNum2()));

        TextView num3View = (TextView) listItemView.findViewById(R.id.num_3_view);
        num3View.setText(String.valueOf(currentItem.getNum3()));

        TextView correctPositionView = (TextView)listItemView.findViewById(R.id.correct_position_view);
        correctPositionView.setText(String.valueOf(currentItem.getCorrectPosition()));

        TextView wrongPositionView = (TextView)listItemView.findViewById(R.id.wrong_position_view);
        wrongPositionView.setText(String.valueOf(currentItem.getWrongPositionCorrectNumber()));

        return listItemView;
    }
}

这是 List 类

package com.apphorizon.guessthenumber;

public class List {

    private int mNum1;
    private int mNum2;
    private int mNum3;
    private int mCorrectPosition;
    private int mWrongPositionCorrectNumber;

    public List(int num1, int num2, int num3, int correctPosition, int wrongPositionCorrectNumber){
        mNum1 = num1;
        mNum2 = num2;
        mNum3 = num3;
        mCorrectPosition = correctPosition;
        mWrongPositionCorrectNumber = wrongPositionCorrectNumber;
    }

    public List(int num1, int num2, int correctPosition, int wrongPositionCorrectNumber){
        mNum1 = num1;
        mNum2 = num2;
        mCorrectPosition = correctPosition;
        mWrongPositionCorrectNumber = wrongPositionCorrectNumber;
    }

    public int getNum1(){
        return mNum1;
    }

    public int getNum2(){
        return mNum2;
    }

    public int getNum3(){
        return mNum3;
    }

    public int getCorrectPosition(){
        return mCorrectPosition;
    }

    public int getWrongPositionCorrectNumber(){
        return mWrongPositionCorrectNumber;
    }
}

该应用目前仅针对 2 位和 3 位数字进行定制,尚未添加更多!

【问题讨论】:

  • 任何地方都允许0吗?
  • 是的,0 是 2/3 位数字中的一个可能数字。该示例本身在其他地方使用了 0。 “01”是正确的数字

标签: java android arraylist android-arrayadapter


【解决方案1】:

如果最后一个文本视图是 2 位数字,您想将其设置为不可见。

因此,我建议您在 List 类中进行以下更改。

private int num1 = -1;
private int num2 = -1;
private int num3 = -1;

这样,如果 num1num2num3 为 -1,您可以通过适配器中的此更改使相应的文本视图不可见

if(currentItem.getNum1() != -1) {
    TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view);
    num1View.setText(String.valueOf(currentItem.getNum1()));
}
else listItemView.findViewById(R.id.num_1_view).setVisibility(View.INVISIBLE);

num2num3 也是如此。

该应用目前仅针对 2 位和 3 位数字进行定制,尚未添加更多!

通过此更改,您将能够实现添加更多的目标,因为这也将支持 1 位数字。如果您不想要 1 位数字,请不要将上面的代码应用于 num1,而仅应用于 num2num3

【讨论】:

  • 是的,解决了!虽然它也删除了绿色背景,但现在需要修复它。谢谢。编辑:使视图消失而不是不可见也解决了这个问题:)
  • 然后将可见性设置为View.GONE
猜你喜欢
  • 2011-05-27
  • 1970-01-01
  • 2021-12-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多